From 78499475199ff5fe2035cb5ff4e1ccbf19a77ece Mon Sep 17 00:00:00 2001 From: zicodxx <> Date: Sun, 27 Jun 2010 11:28:26 +0000 Subject: [PATCH] When starting, leaving or changing a level in any way, use more ordered approach to set Game_wind visible or invisible. Fixing timer-issues after level-change and makes hiding of Game_wind obsolete for certain messageboxes; Moved GameTime and weapon timer variables out of reset_time since this function is not appropriate for this and is not needed between levels anymore due to window management handling start/stop_time properly --- CHANGELOG.txt | 8 ++++++ main/game.c | 1 - main/game.h | 1 + main/gameseq.c | 68 ++++++++++++++++++++++---------------------------- 4 files changed, 39 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index b8779e991..8d632ba1a 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,5 +1,13 @@ D2X-Rebirth Changelog +20100627 +-------- +main/game.c, main/game.h, main/gameseq.c: When starting, leaving or changing a level in any way, use more ordered approach to set Game_wind visible or invisible. Fixing timer-issues after level-change and makes hiding of Game_wind obsolete for certain messageboxes; Moved GameTime and weapon timer variables out of reset_time since this function is not appropriate for this and is not needed between levels anymore due to window management handling start/stop_time properly + +20100625 +-------- +main/titles.c: Made Briefing printing sound apply everytime there is chattering enabled. Even if it would be logical to have it only with flashing cursor, most briefings - even Counterstrike - forget to toggle it correctly + 20100624 -------- arch/ogl/gr.c, arch/sdl/gr.c, include/gr.h, main/menu.c: Added function to list valid resolutions and build resolutions menu dynamically with the resulting list diff --git a/main/game.c b/main/game.c index fcc299677..a8da9a986 100644 --- a/main/game.c +++ b/main/game.c @@ -489,7 +489,6 @@ void FixedStepCalc() void reset_time() { - GameTime = Next_flare_fire_time = Last_laser_fired_time = Next_laser_fire_time = Next_missile_fire_time = 0; last_timer_value = timer_get_fixed_seconds(); } diff --git a/main/game.h b/main/game.h index 8b1587039..cdc05a15c 100644 --- a/main/game.h +++ b/main/game.h @@ -43,6 +43,7 @@ extern int FixedStep; //fixed time bytes stored here extern fix Next_laser_fire_time; // Time at which player can next fire his selected laser. extern fix Last_laser_fired_time; extern fix Next_missile_fire_time; // Time at which player can next fire his selected missile. +extern fix Next_flare_fire_time; extern fix Laser_delay_time; // Delay between laser fires. extern int Cheats_enabled; diff --git a/main/gameseq.c b/main/gameseq.c index ce09c7398..e89ce9aeb 100644 --- a/main/gameseq.c +++ b/main/gameseq.c @@ -391,7 +391,7 @@ void init_player_stats_level(int secret_flag) Player_is_dead = 0; // Added by RH Players[Player_num].homing_object_dist = -F1_0; // Added by RH - Last_laser_fired_time = Next_laser_fire_time = GameTime; // added by RH, solved demo playback bug + Next_flare_fire_time = Last_laser_fired_time = Next_laser_fire_time = Next_missile_fire_time = GameTime; // added by RH, solved demo playback bug Controls.afterburner_state = 0; Last_afterburner_state = 0; @@ -791,7 +791,9 @@ void LoadLevel(int level_num,int page_in_textures) load_palette(Current_level_palette,1,1); //don't change screen show_boxed_message(TXT_LOADING, 0); - timer_delay2(1); +#ifdef RELEASE + timer_delay(F1_0); +#endif load_endlevel_data(level_num); @@ -1028,12 +1030,7 @@ int p_secret_level_destroyed(void) // ----------------------------------------------------------------------------------------------------- void do_secret_message(char *msg) { - int old_vis; - - old_vis = window_is_visible(Game_wind); - window_set_visible(Game_wind, 0); nm_messagebox(NULL, 1, TXT_OK, msg); - window_set_visible(Game_wind, old_vis); } // ----------------------------------------------------------------------------------------------------- @@ -1155,6 +1152,9 @@ void ExitSecretLevel(void) if (Newdemo_state == ND_STATE_PLAYBACK) return; + if (Game_wind) + window_set_visible(Game_wind, 0); + if (!Control_center_destroyed) { state_save_all(0, 2, SECRETC_FILENAME, 0); } @@ -1178,6 +1178,9 @@ void ExitSecretLevel(void) StartNewLevel(Entered_from_level+1, 0); } } + + if (Game_wind) + window_set_visible(Game_wind, 1); } // --------------------------------------------------------------------------------------------------------------- @@ -1211,6 +1214,9 @@ void EnterSecretLevel(void) Assert(! (Game_mode & GM_MULTI) ); + if (Game_wind) + window_set_visible(Game_wind, 0); + Entered_from_level = Current_level_num; if (Control_center_destroyed) @@ -1246,6 +1252,8 @@ void EnterSecretLevel(void) // END NMN // do_cloak_invul_stuff(); + if (Game_wind) + window_set_visible(Game_wind, 1); } //called when the player has finished a level @@ -1253,6 +1261,9 @@ void PlayerFinishedLevel(int secret_flag) { Assert(!secret_flag); + if (Game_wind) + window_set_visible(Game_wind, 0); + //credit the player for hostages Players[Player_num].hostages_rescued_total += Players[Player_num].hostages_on_board; @@ -1262,6 +1273,9 @@ void PlayerFinishedLevel(int secret_flag) last_drawn_cockpit = -1; AdvanceLevel(secret_flag); //now go on to the next one (if one) + + if (Game_wind) + window_set_visible(Game_wind, 1); } #if defined(D2_OEM) || defined(COMPILATION) @@ -1348,8 +1362,6 @@ void AdvanceLevel(int secret_flag) Assert(!secret_flag); - window_set_visible(Game_wind, 0); // suspend the game, including drawing - if (Current_level_num != Last_level) { #ifdef NETWORK if (Game_mode & GM_MULTI) @@ -1365,7 +1377,6 @@ void AdvanceLevel(int secret_flag) #ifdef EDITOR if (Current_level_num == 0) { - window_set_visible(Game_wind, 1); return; //not a real level } #endif @@ -1379,9 +1390,6 @@ void AdvanceLevel(int secret_flag) if (Game_wind) window_close(Game_wind); // Exit out of game loop - if (Game_wind) - window_set_visible(Game_wind, 1); - return; } } @@ -1405,49 +1413,33 @@ void AdvanceLevel(int secret_flag) StartNewLevel(Next_level_num, 0); } - - if (Game_wind) - window_set_visible(Game_wind, 1); } void died_in_mine_message(void) { // Tell the player he died in the mine, explain why - int old_vis; if (Game_mode & GM_MULTI) return; set_screen_mode(SCREEN_MENU); //go into menu mode - gr_set_current_canvas(NULL); - - old_vis = window_is_visible(Game_wind); - window_set_visible(Game_wind, 0); nm_messagebox(NULL, 1, TXT_OK, TXT_DIED_IN_MINE); - window_set_visible(Game_wind, old_vis); } -// Called when player dies on secret level. +// Called when player leaves secret level (alive or dead). void returning_to_level_message(void) { char msg[128]; - int old_vis; - if (Game_mode & GM_MULTI) return; set_screen_mode(SCREEN_MENU); //go into menu mode - gr_set_current_canvas(NULL); - - old_vis = window_is_visible(Game_wind); - window_set_visible(Game_wind, 0); sprintf(msg, "Returning to level %i", Entered_from_level); nm_messagebox(NULL, 1, TXT_OK, msg); - window_set_visible(Game_wind, old_vis); } // Called when player dies on secret level. @@ -1455,8 +1447,6 @@ void advancing_to_level_message(void) { char msg[128]; - int old_vis; - // Only supposed to come here from a secret level. Assert(Current_level_num < 0); @@ -1464,20 +1454,18 @@ void advancing_to_level_message(void) return; set_screen_mode(SCREEN_MENU); //go into menu mode - gr_set_current_canvas(NULL); - - old_vis = window_is_visible(Game_wind); - window_set_visible(Game_wind, 0); sprintf(msg, "Base level destroyed.\nAdvancing to level %i", Entered_from_level+1); nm_messagebox(NULL, 1, TXT_OK, msg); - window_set_visible(Game_wind, old_vis); } void digi_stop_digi_sounds(); void DoPlayerDead() { + if (Game_wind) + window_set_visible(Game_wind, 0); + reset_palette_add(); gr_palette_load (gr_palette); @@ -1574,6 +1562,9 @@ void DoPlayerDead() } digi_sync_sounds(); + + if (Game_wind) + window_set_visible(Game_wind, 1); } extern int BigWindowSwitch; @@ -1826,6 +1817,7 @@ void StartNewLevel(int level_num, int secret_flag) { hide_menus(); + GameTime = 0; ThisLevelTime=0; if ((level_num > 0) && (!secret_flag)) { @@ -1990,7 +1982,7 @@ void StartLevel(int random_flag) init_ai_objects(); #endif - reset_time(); + // reset_time(); Time is stopped and should be resumed soon. You shall be obsolete! reset_rear_view(); Auto_fire_fusion_cannon_time = 0;