#ifndef GAME_H
#define GAME_H
+/* (not included here due to collisions with Emerald Mine engine definitions) */
+/* #include "main.h" */
#define MAX_INVENTORY_SIZE 1000
#define STD_NUM_KEYS 4
#define MAX_NUM_KEYS 8
+#if 1
+struct GamePanelInfo
+{
+ struct TextPosInfo level;
+ struct TextPosInfo gems;
+ struct TextPosInfo inventory;
+ struct TextPosInfo keys;
+ struct TextPosInfo score;
+ struct TextPosInfo time;
+};
+#else
struct GamePanelInfo
{
struct XY level;
struct XY score;
struct XY time;
};
+#endif
struct GameInfo
{
int centered_player_nr;
int centered_player_nr_next;
boolean set_centered_player;
+
+ /* values for random number generator initialization after snapshot */
+ unsigned long num_random_calls;
};
struct PlayerInfo
boolean present; /* player present in level playfield */
boolean connected; /* player connected (locally or via network) */
boolean active; /* player present and connected */
+ boolean killed; /* player maybe present/active, but killed */
int index_nr; /* player number (0 to 3) */
int index_bit; /* player number bit (1 << 0 to 1 << 3) */
boolean LevelSolved, GameOver;
+ boolean LevelSolved_GameWon;
boolean LevelSolved_GameEnd;
+ boolean LevelSolved_PanelOff;
boolean LevelSolved_SaveTape;
boolean LevelSolved_SaveScore;
int lights_still_needed;
int friends_still_needed;
int key[MAX_NUM_KEYS];
+ int num_white_keys;
int dynabomb_count, dynabomb_size, dynabombs_left, dynabomb_xl;
int shield_normal_time_left;
int shield_deadly_time_left;
void RaiseScore(int);
void RaiseScoreElement(int);
+
+void RequestQuitGameExt(boolean, boolean, char *);
void RequestQuitGame(boolean);
+unsigned int InitEngineRandom_RND(long);
+unsigned int RND(int);
+
void FreeEngineSnapshot();
void LoadEngineSnapshot();
void SaveEngineSnapshot();