| 33 | static void ode_free(void* ptr, size_t size) { return xr_free(ptr); } |
| 34 | |
| 35 | CGamePersistent::CGamePersistent(void) |
| 36 | { |
| 37 | m_game_params.m_e_game_type = GAME_ANY; |
| 38 | ambient_effect_next_time = 0; |
| 39 | ambient_effect_stop_time = 0; |
| 40 | ambient_particles = 0; |
| 41 | |
| 42 | ambient_effect_wind_start = 0.f; |
| 43 | ambient_effect_wind_in_time = 0.f; |
| 44 | ambient_effect_wind_end = 0.f; |
| 45 | ambient_effect_wind_out_time = 0.f; |
| 46 | ambient_effect_wind_on = false; |
| 47 | |
| 48 | m_pUI_core = NULL; |
| 49 | m_pMainMenu = NULL; |
| 50 | m_intro = NULL; |
| 51 | m_intro_event.bind(this, &CGamePersistent::start_logo_intro); |
| 52 | #ifdef DEBUG |
| 53 | m_frame_counter = 0; |
| 54 | m_last_stats_frame = u32(-2); |
| 55 | #endif |
| 56 | // |
| 57 | dSetAllocHandler(ode_alloc); |
| 58 | dSetReallocHandler(ode_realloc); |
| 59 | dSetFreeHandler(ode_free); |
| 60 | |
| 61 | // |
| 62 | BOOL bDemoMode = (0 != strstr(Core.Params, "-demomode ")); |
| 63 | if (bDemoMode) |
| 64 | { |
| 65 | string256 fname; |
| 66 | LPCSTR name = strstr(Core.Params, "-demomode ") + 10; |
| 67 | sscanf(name, "%s", fname); |
| 68 | R_ASSERT2(fname[0], "Missing filename for 'demomode'"); |
| 69 | Msg("- playing in demo mode '%s'", fname); |
| 70 | pDemoFile = FS.r_open(fname); |
| 71 | Device.seqFrame.Add(this); |
| 72 | eDemoStart = Engine.Event.Handler_Attach("GAME:demo", this); |
| 73 | uTime2Change = 0; |
| 74 | } |
| 75 | else |
| 76 | { |
| 77 | pDemoFile = NULL; |
| 78 | eDemoStart = NULL; |
| 79 | } |
| 80 | |
| 81 | eQuickLoad = Engine.Event.Handler_Attach("Game:QuickLoad", this); |
| 82 | } |
| 83 | |
| 84 | CGamePersistent::~CGamePersistent(void) |
| 85 | { |
nothing calls this directly
no test coverage detected