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:
parent
ef4e9e1e17
commit
4e3bf92435
|
@ -1,5 +1,9 @@
|
||||||
D1X-Rebirth Changelog
|
D1X-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
|
20100625
|
||||||
--------
|
--------
|
||||||
main/gamecntl.c: Implemented kill_and_so_forth via DEL+SHIFT+B for easier debugging
|
main/gamecntl.c: Implemented kill_and_so_forth via DEL+SHIFT+B for easier debugging
|
||||||
|
|
|
@ -454,7 +454,6 @@ void FixedStepCalc()
|
||||||
|
|
||||||
void reset_time()
|
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();
|
last_timer_value = timer_get_fixed_seconds();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,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 Next_laser_fire_time; // Time at which player can next fire his selected laser.
|
||||||
extern fix Last_laser_fired_time;
|
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_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 fix Laser_delay_time; // Delay between laser fires.
|
||||||
extern int Cheats_enabled;
|
extern int Cheats_enabled;
|
||||||
|
|
||||||
|
|
|
@ -338,7 +338,7 @@ void init_player_stats_level()
|
||||||
Player_is_dead = 0; // Added by RH
|
Player_is_dead = 0; // Added by RH
|
||||||
Players[Player_num].homing_object_dist = -F1_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
|
||||||
|
|
||||||
init_gauges();
|
init_gauges();
|
||||||
}
|
}
|
||||||
|
@ -687,7 +687,9 @@ void LoadLevel(int level_num)
|
||||||
gr_use_palette_table( "palette.256" );
|
gr_use_palette_table( "palette.256" );
|
||||||
|
|
||||||
show_boxed_message(TXT_LOADING, 0);
|
show_boxed_message(TXT_LOADING, 0);
|
||||||
timer_delay2(1);
|
#ifdef RELEASE
|
||||||
|
timer_delay(F1_0);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef NETWORK
|
#ifdef NETWORK
|
||||||
my_segments_checksum = netmisc_calc_checksum(Segments, sizeof(segment)*(Highest_segment_index+1));
|
my_segments_checksum = netmisc_calc_checksum(Segments, sizeof(segment)*(Highest_segment_index+1));
|
||||||
|
@ -878,6 +880,9 @@ void PlayerFinishedLevel(int secret_flag)
|
||||||
int rval;
|
int rval;
|
||||||
int was_multi = 0;
|
int was_multi = 0;
|
||||||
|
|
||||||
|
if (Game_wind)
|
||||||
|
window_set_visible(Game_wind, 0);
|
||||||
|
|
||||||
//credit the player for hostages
|
//credit the player for hostages
|
||||||
Players[Player_num].hostages_rescued_total += Players[Player_num].hostages_on_board;
|
Players[Player_num].hostages_rescued_total += Players[Player_num].hostages_on_board;
|
||||||
|
|
||||||
|
@ -939,6 +944,9 @@ void PlayerFinishedLevel(int secret_flag)
|
||||||
}
|
}
|
||||||
else if (rval && Game_wind)
|
else if (rval && Game_wind)
|
||||||
window_close(Game_wind);
|
window_close(Game_wind);
|
||||||
|
|
||||||
|
if (Game_wind)
|
||||||
|
window_set_visible(Game_wind, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -950,14 +958,11 @@ void PlayerFinishedLevel(int secret_flag)
|
||||||
// Return true if game over.
|
// Return true if game over.
|
||||||
int AdvanceLevel(int secret_flag)
|
int AdvanceLevel(int secret_flag)
|
||||||
{
|
{
|
||||||
window_set_visible(Game_wind, 0); // suspend the game, including drawing
|
|
||||||
|
|
||||||
Control_center_destroyed = 0;
|
Control_center_destroyed = 0;
|
||||||
|
|
||||||
#ifdef EDITOR
|
#ifdef EDITOR
|
||||||
if (PLAYING_BUILTIN_MISSION)
|
if (PLAYING_BUILTIN_MISSION)
|
||||||
{
|
{
|
||||||
window_set_visible(Game_wind, 1);
|
|
||||||
return 0; //not a real level
|
return 0; //not a real level
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -971,9 +976,6 @@ int AdvanceLevel(int secret_flag)
|
||||||
result = multi_endlevel(&secret_flag); // Wait for other players to reach this point
|
result = multi_endlevel(&secret_flag); // Wait for other players to reach this point
|
||||||
if (result) // failed to sync
|
if (result) // failed to sync
|
||||||
{
|
{
|
||||||
if (Game_wind)
|
|
||||||
window_set_visible(Game_wind, 1);
|
|
||||||
|
|
||||||
return (Current_level_num == Last_level);
|
return (Current_level_num == Last_level);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1021,9 +1023,6 @@ int AdvanceLevel(int secret_flag)
|
||||||
|
|
||||||
key_flush();
|
key_flush();
|
||||||
|
|
||||||
if (Game_wind)
|
|
||||||
window_set_visible(Game_wind, 1);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1037,14 +1036,15 @@ died_in_mine_message(void)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gr_set_current_canvas(NULL);
|
gr_set_current_canvas(NULL);
|
||||||
window_set_visible(Game_wind, 0);
|
|
||||||
|
|
||||||
nm_messagebox(NULL, 1, TXT_OK, TXT_DIED_IN_MINE);
|
nm_messagebox(NULL, 1, TXT_OK, TXT_DIED_IN_MINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
//called when the player has died
|
//called when the player has died
|
||||||
void DoPlayerDead()
|
void DoPlayerDead()
|
||||||
{
|
{
|
||||||
|
if (Game_wind)
|
||||||
|
window_set_visible(Game_wind, 0);
|
||||||
|
|
||||||
reset_palette_add();
|
reset_palette_add();
|
||||||
|
|
||||||
gr_palette_load (gr_palette);
|
gr_palette_load (gr_palette);
|
||||||
|
@ -1137,6 +1137,8 @@ void DoPlayerDead()
|
||||||
StartLevel(1);
|
StartLevel(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Game_wind)
|
||||||
|
window_set_visible(Game_wind, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//called when the player is starting a new level for normal game mode and restore state
|
//called when the player is starting a new level for normal game mode and restore state
|
||||||
|
@ -1262,6 +1264,8 @@ void StartNewLevel(int level_num)
|
||||||
{
|
{
|
||||||
hide_menus();
|
hide_menus();
|
||||||
|
|
||||||
|
GameTime = 0;
|
||||||
|
|
||||||
load_custom_data(get_level_file(level_num));
|
load_custom_data(get_level_file(level_num));
|
||||||
|
|
||||||
if (!(Game_mode & GM_MULTI)) {
|
if (!(Game_mode & GM_MULTI)) {
|
||||||
|
@ -1390,7 +1394,7 @@ void StartLevel(int random)
|
||||||
|
|
||||||
ai_reset_all_paths();
|
ai_reset_all_paths();
|
||||||
ai_init_boss_for_ship();
|
ai_init_boss_for_ship();
|
||||||
reset_time();
|
// reset_time(); Time is stopped and should be resumed soon. You shall be obsolete!
|
||||||
|
|
||||||
reset_rear_view();
|
reset_rear_view();
|
||||||
Auto_fire_fusion_cannon_time = 0;
|
Auto_fire_fusion_cannon_time = 0;
|
||||||
|
|
Loading…
Reference in a new issue