/* GAME.C symbols in this file: 00095260 0110: _game_initialize (0000) 00095370 00c0: _game_dispose (0000) 00095430 01f0: _game_precache_new_map (0000) 00095620 0020: _game_map_loading_in_progress (0000) 00095640 0080: _game_unload (0000) 000956C0 00c0: _game_dispose_from_old_map (0000) 00095780 00a0: _game_frame (0000) 00095820 00b0: _remove_quitting_players_from_game (0000) 000958D0 0110: _game_tick (0000) 000959E0 0030: _game_options_new (0000) 00095A10 0020: _game_options_verify (0000) 00095A30 0050: _game_initial_pulse (0000) 00095A80 0020: _game_set_players_are_double_speed (0000) 00095AA0 0010: _game_players_are_double_speed (0000) 00095AB0 0020: _game_difficulty_level_set (0000) 00095AD0 0010: _game_difficulty_level_get (0000) 00095AE0 0020: _game_difficulty_level_get_ignore_easy (0000) 00095B00 0030: _game_set_game_variant (0000) 00095B30 0030: _game_set_game_engine_index (0000) 00095B60 0040: _game_all_quiet (0000) 00095BA0 0140: _game_safe_to_save (0000) 00095CE0 0020: _game_safe_to_speak (0000) 00095D00 0010: _game_is_cooperative (0000) 00095D10 0010: _set_random_seed (0000) 00095D20 00d0: _game_load (0000) 00095DF0 0160: _game_initialize_for_new_map (0000) 00095F50 0060: _game_set_game_variant_from_name (0000) 0025AD18 000c: ??_C@_0M@OGHJLDGG@game_update?$AA@ (0000) 0025AD24 000b: ??_C@_0L@GOOMCKGH@impossible?$AA@ (0000) 0025AD30 0005: ??_C@_04EFOBLGJF@hard?$AA@ (0000) 0025AD38 0007: ??_C@_06IKLLLDHL@normal?$AA@ (0000) 0025AD40 0005: ??_C@_04EDNPHEAP@easy?$AA@ (0000) 0025AD48 000d: ??_C@_0N@FEKOENDC@game?5globals?$AA@ (0000) 0025AD58 002a: ??_C@_0CK@PBEAEMDE@cache_files_precache_map_loaded?$CI@ (0000) 0025AD88 0054: ??_C@_0FE@OLEMLKAO@cache_files_precache_in_progress@ (0000) 0025ADDC 0039: ??_C@_0DJ@FJDPKGNI@read?5the?5last?5error?5message?5for?5@ (0000) 0025AE18 001b: ??_C@_0BL@KNHJNBLO@c?3?2halo?2SOURCE?2game?2game?4c?$AA@ (0000) 0025AE34 002c: ??_C@_0CM@DHJPIMML@shouldn?8t?5be?5here?4?4?4?5map?5?8?$CFs?8?5do@ (0000) 0025AE60 0015: ??_C@_0BF@OMFFMPBC@game_globals?9?$DOactive?$AA@ (0000) 0025AE78 002a: ??_C@_0CK@HKBOLAEF@player?5?$CFx?5failed?5to?5quit?0?5wanted@ (0000) 0025AEA8 0047: ??_C@_0EH@OCEAOGL@?$CB?$CCthis?5is?5broken?5and?5should?5get?5@ (0000) 0025AEF0 0031: ??_C@_0DB@DCHNCJKB@not?5safe?5to?5save?3?5vehicle_moving@ (0000) 0025AF24 0025: ??_C@_0CF@PDKCNCHK@not?5safe?5to?5save?3?5any_player_is_@ (0000) 0025AF4C 002b: ??_C@_0CL@CDOGDNMO@not?5safe?5to?5save?3?5any_player_is_@ (0000) 0025AF78 0028: ??_C@_0CI@POCCMPOA@not?5safe?5to?5save?3?5any_unit_is_da@ (0000) 0025AFA0 0030: ??_C@_0DA@BKJKAMHL@not?5safe?5to?5save?3?5dangerous_effe@ (0000) 0025AFD0 002e: ??_C@_0CO@LFBOBOC@not?5safe?5to?5save?3?5dangerous_item@ (0000) 0025B000 0034: ??_C@_0DE@DKEBJNA@not?5safe?5to?5save?3?5dangerous_proj@ (0000) 0025B034 002c: ??_C@_0CM@IBBKLIBO@not?5safe?5to?5save?3?5ai_enemies_can@ (0000) 0025B060 001d: ??_C@_0BN@FDEBMHJB@game_options_verify?$CIoptions?$CJ?$AA@ (0000) 0025B080 001a: ??_C@_0BK@NHHNPJL@?$CBgame_globals?9?$DOmap_loaded?$AA@ (0000) 0025B09C 0016: ??_C@_0BG@JKMPENHK@?$CBgame_globals?9?$DOactive?$AA@ (0000) 0025B0B4 0019: ??_C@_0BJ@CDJMHJAA@game_globals?9?$DOmap_loaded?$AA@ (0000) 002DDDB0 0608: _global_game_difficulty_level_names (0000) 0043E48C 0004: _bss_0043e48c (0000) */ struct game_options; /* ---------- headers */ #include "cseries/cseries.h" #include "game/game.h" /* ---------- constants */ /* ---------- macros */ /* ---------- structures */ struct game_options { unsigned long flags; short code_version; short difficulty; unsigned long random_seed; char map_name[256]; }; struct game_options_prefix { unsigned long flags; short code_version; short difficulty; }; struct game_runtime_globals_prefix { boolean map_loaded; boolean active; boolean players_are_double_speed; boolean map_load_in_progress; real loading_progress; struct game_options_prefix options; }; typedef char verify_game_options_size[ sizeof(struct game_options) == 0x10C ? 1 : -1]; typedef char verify_game_options_code_version_offset[ offsetof(struct game_options, code_version) == 0x4 ? 1 : -1]; typedef char verify_game_options_difficulty_offset[ offsetof(struct game_options, difficulty) == 0x6 ? 1 : -1]; typedef char verify_game_options_random_seed_offset[ offsetof(struct game_options, random_seed) == 0x8 ? 1 : -1]; typedef char verify_game_options_map_name_offset[ offsetof(struct game_options, map_name) == 0xC ? 1 : -1]; typedef char verify_game_runtime_globals_players_are_double_speed_offset[ offsetof(struct game_runtime_globals_prefix, players_are_double_speed) == 0x2 ? 1 : -1]; typedef char verify_game_runtime_globals_difficulty_offset[ offsetof(struct game_runtime_globals_prefix, options) + offsetof(struct game_options_prefix, difficulty) == 0xE ? 1 : -1]; /* ---------- prototypes */ /* ---------- globals */ extern struct game_runtime_globals_prefix *bss_0043e48c; extern short player_spawn_count; /* ---------- public code */ void game_options_new( struct game_options *options) { csmemset(options, 0, sizeof(*options)); options->code_version = 0; options->difficulty = _game_difficulty_level_normal; options->random_seed = 0xDEADBEEF; return; } void game_set_players_are_double_speed( boolean players_are_double_speed) { bss_0043e48c->players_are_double_speed = players_are_double_speed; return; } boolean game_players_are_double_speed( void) { return bss_0043e48c->players_are_double_speed; } void game_difficulty_level_set( short difficulty) { bss_0043e48c->options.difficulty = difficulty; return; } short game_difficulty_level_get( void) { return bss_0043e48c->options.difficulty; } boolean game_is_cooperative( void) { return player_spawn_count > 1; } /* ---------- private code */