// (c) 1995-2014 by Artsoft Entertainment
// Holger Schemel
// info@artsoft.org
-// http://www.artsoft.org/
+// https://www.artsoft.org/
// ----------------------------------------------------------------------------
// game.h
// ============================================================================
#define STR_SNAPSHOT_MODE_EVERY_COLLECT "every_collect"
#define STR_SNAPSHOT_MODE_DEFAULT STR_SNAPSHOT_MODE_OFF
+#define STR_SCORES_TYPE_LOCAL_ONLY "local_scores_only"
+#define STR_SCORES_TYPE_SERVER_ONLY "server_scores_only"
+#define STR_SCORES_TYPE_LOCAL_AND_SERVER "local_and_server_scores"
+#define STR_SCORES_TYPE_DEFAULT STR_SCORES_TYPE_LOCAL_AND_SERVER
+
#define SNAPSHOT_MODE_OFF 0
#define SNAPSHOT_MODE_EVERY_STEP 1
#define SNAPSHOT_MODE_EVERY_MOVE 2
struct XY panel_sound_music;
struct XY panel_sound_loops;
struct XY panel_sound_simple;
+
+ struct XY touch_stop;
+ struct XY touch_pause;
};
struct GameSnapshotInfo
boolean use_native_emc_graphics_engine;
boolean use_native_sp_graphics_engine;
boolean use_masked_pushing;
+ boolean use_masked_elements;
+ boolean use_masked_elements_initial;
int forced_scroll_delay_value;
int scroll_delay_value;
int tile_size;
boolean max_num_changes_per_frame;
boolean use_reverse_scan_direction;
+ // flags to indicate which game actions are used in this game
+ boolean use_key_actions;
+ boolean use_mouse_actions;
+
// variable within running game
int yamyam_content_nr;
boolean robot_wheel_active;
boolean explosions_delayed;
boolean envelope_active;
- boolean no_time_limit; // (variable only in very special case)
+ boolean no_level_time_limit; // (variable only in very special case)
+
+ int time_final; // time (in seconds) or steps left or played
+ int score_time_final; // time (in frames) or steps played
+
+ int score;
+ int score_final;
+
+ int health;
+ int health_final;
int gems_still_needed;
int sokoban_fields_still_needed;
int players_still_needed;
int friends_still_needed;
+ int robot_wheel_x, robot_wheel_y;
+ int exit_x, exit_y;
+
+ boolean all_players_gone;
+
// values for the new EMC elements
int lenses_time_left;
int magnify_time_left;
- boolean ball_state;
+ boolean ball_active;
int ball_content_nr;
// values for player idle animation (no effect on engine)
// values for special request dialog control
boolean request_active;
+ boolean request_active_or_moving;
// values for special game control
int centered_player_nr;
int centered_player_nr_next;
boolean set_centered_player;
+ boolean set_centered_player_wrap;
+
+ // values for single step mode control
+ boolean enter_single_step_mode;
// values for random number generator initialization after snapshot
unsigned int num_random_calls;
// values for handling states for solved level and game over
boolean LevelSolved;
+ boolean GamePlayed;
boolean GameOver;
boolean LevelSolved_GameWon;
int client_nr; // network client identifier
byte action; // action from local input device
- byte mapped_action; // action mapped from device to player
byte effective_action; /* action acknowledged from network server
or summarized over all configured input
devices when in single player mode */
byte programmed_action; /* action forced by game itself (like moving
through doors); overrides other actions */
+ byte snap_action; // action from TAS snap keys
struct MouseActionInfo mouse_action; // (used by MM engine only)
struct MouseActionInfo effective_mouse_action; // (used by MM engine only)
int step_counter;
- int score;
- int score_final;
-
- int health;
- int health_final;
-
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;
+ int last_removed_element;
+
int inventory_element[MAX_INVENTORY_SIZE];
int inventory_infinite_element;
int inventory_size;
int getPlayerInventorySize(int);
-void DrawGameValue_Time(int);
+void UpdateGameDoorValues(void);
void DrawGameDoorValues(void);
void UpdateAndDisplayGameControlValues(void);
void GameWon(void);
void GameEnd(void);
+void MergeServerScore(void);
+
void InitPlayerGfxAnimation(struct PlayerInfo *, int, int);
void Moving2Blocked(int, int, int *, int *);
void Blocked2Moving(int, int, int *, int *);
void CreateGameButtons(void);
void FreeGameButtons(void);
+void MapLoadSaveButtons(void);
void MapUndoRedoButtons(void);
-void UnmapUndoRedoButtons(void);
+void ModifyPauseButtons(void);
void MapGameButtons(void);
void UnmapGameButtons(void);
void RedrawGameButtons(void);