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

This commit is contained in:
zicodxx 2010-06-27 11:28:26 +00:00
parent d18e8f08fe
commit 7849947519
4 changed files with 39 additions and 39 deletions

View file

@ -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

View file

@ -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();
}

View file

@ -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;

View file

@ -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;