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 {
//@@extern int N_controlcen_guns;
extern int Control_center_next_fire_time;
extern int Control_center_present;
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;
int Countdown_seconds_left;
fix Countdown_timer;
fix Control_center_next_fire_time;
int Total_countdown_time; //in whole seconds
};

View file

@ -70,7 +70,6 @@ control_center_triggers ControlCenterTriggers;
namespace dcx {
player_visibility_state Control_center_player_been_seen;
int Control_center_next_fire_time;
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);
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_next_fire_time = 0;
LevelUniqueControlCenterState.Control_center_next_fire_time = 0;
}
}
@ -397,7 +396,8 @@ void do_controlcen_frame(const vmobjptridx_t obj)
else
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;
const auto &player_pos = (player_info.powerup_flags & PLAYER_FLAGS_CLOAKED) ? Believed_player_pos : ConsoleObject->pos;
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
delta_fire_time *= 2;
Control_center_next_fire_time = delta_fire_time;
LevelUniqueControlCenterState.Control_center_next_fire_time = delta_fire_time;
}
} 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.
LevelUniqueControlCenterState.Control_center_been_hit = 0;
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;
}

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);
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);
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);
@ -1861,7 +1861,7 @@ int state_restore_all_sub(const d_level_shared_destructible_light_state &LevelSh
const int cc = PHYSFSX_readSXE32(fp, swap);
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);
Dead_controlcen_object_num = PHYSFSX_readSXE32(fp, swap);
if (LevelUniqueControlCenterState.Control_center_destroyed)