Move Control_center_next_fire_time to d_level_unique_control_center_state

This commit is contained in:
Kp 2019-08-15 01:34:22 +00:00
parent 885296b136
commit 195f5e7d9f
4 changed files with 9 additions and 10 deletions

View file

@ -105,7 +105,6 @@ static inline reactor &get_reactor_definition(int id)
namespace dcx { namespace dcx {
//@@extern int N_controlcen_guns; //@@extern int N_controlcen_guns;
extern int Control_center_next_fire_time;
extern int Control_center_present; extern int Control_center_present;
extern objnum_t Dead_controlcen_object_num; extern objnum_t Dead_controlcen_object_num;
} }

View file

@ -571,6 +571,7 @@ struct d_level_unique_control_center_state
uint8_t Control_center_been_hit; uint8_t Control_center_been_hit;
int Countdown_seconds_left; int Countdown_seconds_left;
fix Countdown_timer; fix Countdown_timer;
fix Control_center_next_fire_time;
int Total_countdown_time; //in whole seconds int Total_countdown_time; //in whole seconds
}; };

View file

@ -70,7 +70,6 @@ control_center_triggers ControlCenterTriggers;
namespace dcx { namespace dcx {
player_visibility_state Control_center_player_been_seen; player_visibility_state Control_center_player_been_seen;
int Control_center_next_fire_time;
int Control_center_present; int Control_center_present;
} }
@ -365,7 +364,7 @@ void do_controlcen_frame(const vmobjptridx_t obj)
auto dist_to_player = vm_vec_normalize_quick(vec_to_player); auto dist_to_player = vm_vec_normalize_quick(vec_to_player);
if (dist_to_player < F1_0*200) { if (dist_to_player < F1_0*200) {
Control_center_player_been_seen = player_is_visible_from_object(obj, obj->pos, 0, vec_to_player); Control_center_player_been_seen = player_is_visible_from_object(obj, obj->pos, 0, vec_to_player);
Control_center_next_fire_time = 0; LevelUniqueControlCenterState.Control_center_next_fire_time = 0;
} }
} }
@ -397,7 +396,8 @@ void do_controlcen_frame(const vmobjptridx_t obj)
else else
controlcen_death_silence = 0; controlcen_death_silence = 0;
if ((Control_center_next_fire_time < 0) && !(controlcen_death_silence > F1_0*2)) { if (LevelUniqueControlCenterState.Control_center_next_fire_time < 0 && !(controlcen_death_silence > F1_0*2))
{
auto &player_info = plrobj.ctype.player_info; auto &player_info = plrobj.ctype.player_info;
const auto &player_pos = (player_info.powerup_flags & PLAYER_FLAGS_CLOAKED) ? Believed_player_pos : ConsoleObject->pos; const auto &player_pos = (player_info.powerup_flags & PLAYER_FLAGS_CLOAKED) ? Believed_player_pos : ConsoleObject->pos;
best_gun_num = calc_best_gun( best_gun_num = calc_best_gun(
@ -453,12 +453,11 @@ void do_controlcen_frame(const vmobjptridx_t obj)
if (Game_mode & GM_MULTI) // slow down rate of fire in multi player if (Game_mode & GM_MULTI) // slow down rate of fire in multi player
delta_fire_time *= 2; delta_fire_time *= 2;
Control_center_next_fire_time = delta_fire_time; LevelUniqueControlCenterState.Control_center_next_fire_time = delta_fire_time;
} }
} else } else
Control_center_next_fire_time -= FrameTime; LevelUniqueControlCenterState.Control_center_next_fire_time -= FrameTime;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
@ -533,7 +532,7 @@ void init_controlcen_for_level(void)
// Say the control center has not yet been hit. // Say the control center has not yet been hit.
LevelUniqueControlCenterState.Control_center_been_hit = 0; LevelUniqueControlCenterState.Control_center_been_hit = 0;
Control_center_player_been_seen = player_visibility_state::no_line_of_sight; Control_center_player_been_seen = player_visibility_state::no_line_of_sight;
Control_center_next_fire_time = 0; LevelUniqueControlCenterState.Control_center_next_fire_time = 0;
Dead_controlcen_object_num = object_none; Dead_controlcen_object_num = object_none;
} }

View file

@ -1237,7 +1237,7 @@ int state_save_all_sub(const char *filename, const char *desc)
const auto cc = static_cast<int>(Control_center_player_been_seen); const auto cc = static_cast<int>(Control_center_player_been_seen);
PHYSFS_write(fp, &cc, sizeof(int), 1); PHYSFS_write(fp, &cc, sizeof(int), 1);
} }
PHYSFS_write(fp, &Control_center_next_fire_time, sizeof(int), 1); PHYSFS_write(fp, &LevelUniqueControlCenterState.Control_center_next_fire_time, sizeof(int), 1);
PHYSFS_write(fp, &Control_center_present, sizeof(int), 1); PHYSFS_write(fp, &Control_center_present, sizeof(int), 1);
int dead_controlcen_object_num = Dead_controlcen_object_num == object_none ? -1 : Dead_controlcen_object_num; int dead_controlcen_object_num = Dead_controlcen_object_num == object_none ? -1 : Dead_controlcen_object_num;
PHYSFS_write(fp, &dead_controlcen_object_num, sizeof(int), 1); PHYSFS_write(fp, &dead_controlcen_object_num, sizeof(int), 1);
@ -1861,7 +1861,7 @@ int state_restore_all_sub(const d_level_shared_destructible_light_state &LevelSh
const int cc = PHYSFSX_readSXE32(fp, swap); const int cc = PHYSFSX_readSXE32(fp, swap);
Control_center_player_been_seen = static_cast<player_visibility_state>(cc); Control_center_player_been_seen = static_cast<player_visibility_state>(cc);
} }
Control_center_next_fire_time = PHYSFSX_readSXE32(fp, swap); LevelUniqueControlCenterState.Control_center_next_fire_time = PHYSFSX_readSXE32(fp, swap);
Control_center_present = PHYSFSX_readSXE32(fp, swap); Control_center_present = PHYSFSX_readSXE32(fp, swap);
Dead_controlcen_object_num = PHYSFSX_readSXE32(fp, swap); Dead_controlcen_object_num = PHYSFSX_readSXE32(fp, swap);
if (LevelUniqueControlCenterState.Control_center_destroyed) if (LevelUniqueControlCenterState.Control_center_destroyed)