Move Control_center_player_been_seen to d_level_unique_control_center_state
This commit is contained in:
parent
0826881fa0
commit
d9d536afda
|
@ -173,8 +173,6 @@ static inline vms_vector make_random_vector()
|
|||
return make_random_vector(v), v;
|
||||
}
|
||||
|
||||
extern player_visibility_state Control_center_player_been_seen;
|
||||
|
||||
}
|
||||
#ifdef dsx
|
||||
namespace dsx {
|
||||
|
|
|
@ -570,6 +570,7 @@ struct d_level_unique_control_center_state
|
|||
uint8_t Control_center_destroyed;
|
||||
uint8_t Control_center_been_hit;
|
||||
uint8_t Control_center_present;
|
||||
player_visibility_state Control_center_player_been_seen;
|
||||
objnum_t Dead_controlcen_object_num;
|
||||
int Countdown_seconds_left;
|
||||
fix Countdown_timer;
|
||||
|
|
|
@ -67,12 +67,6 @@ int Reactor_strength=-1; //-1 mean not set by designer
|
|||
|
||||
control_center_triggers ControlCenterTriggers;
|
||||
|
||||
namespace dcx {
|
||||
|
||||
player_visibility_state Control_center_player_been_seen;
|
||||
|
||||
}
|
||||
|
||||
namespace dsx {
|
||||
|
||||
static window_event_result do_countdown_frame();
|
||||
|
@ -338,7 +332,7 @@ void do_controlcen_frame(const vmobjptridx_t obj)
|
|||
#endif
|
||||
|
||||
auto &plrobj = get_local_plrobj();
|
||||
if (!(LevelUniqueControlCenterState.Control_center_been_hit || player_is_visible(Control_center_player_been_seen)))
|
||||
if (!(LevelUniqueControlCenterState.Control_center_been_hit || player_is_visible(LevelUniqueControlCenterState.Control_center_player_been_seen)))
|
||||
{
|
||||
if (!(d_tick_count % 8)) { // Do every so often...
|
||||
// This is a hack. Since the control center is not processed by
|
||||
|
@ -361,7 +355,7 @@ void do_controlcen_frame(const vmobjptridx_t obj)
|
|||
auto vec_to_player = vm_vec_sub(ConsoleObject->pos, obj->pos);
|
||||
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);
|
||||
LevelUniqueControlCenterState.Control_center_player_been_seen = player_is_visible_from_object(obj, obj->pos, 0, vec_to_player);
|
||||
LevelUniqueControlCenterState.Frametime_until_next_fire = 0;
|
||||
}
|
||||
}
|
||||
|
@ -371,7 +365,7 @@ void do_controlcen_frame(const vmobjptridx_t obj)
|
|||
|
||||
#if defined(DXX_BUILD_DESCENT_II)
|
||||
// Periodically, make the reactor fall asleep if player not visible.
|
||||
if (LevelUniqueControlCenterState.Control_center_been_hit || player_is_visible(Control_center_player_been_seen))
|
||||
if (LevelUniqueControlCenterState.Control_center_been_hit || player_is_visible(LevelUniqueControlCenterState.Control_center_player_been_seen))
|
||||
{
|
||||
if ((Last_time_cc_vis_check + F1_0*5 < GameTime64) || (Last_time_cc_vis_check > GameTime64)) {
|
||||
fix dist_to_player;
|
||||
|
@ -380,8 +374,8 @@ void do_controlcen_frame(const vmobjptridx_t obj)
|
|||
dist_to_player = vm_vec_normalize_quick(vec_to_player);
|
||||
Last_time_cc_vis_check = GameTime64;
|
||||
if (dist_to_player < F1_0*120) {
|
||||
Control_center_player_been_seen = player_is_visible_from_object(obj, obj->pos, 0, vec_to_player);
|
||||
if (!player_is_visible(Control_center_player_been_seen))
|
||||
LevelUniqueControlCenterState.Control_center_player_been_seen = player_is_visible_from_object(obj, obj->pos, 0, vec_to_player);
|
||||
if (!player_is_visible(LevelUniqueControlCenterState.Control_center_player_been_seen))
|
||||
LevelUniqueControlCenterState.Control_center_been_hit = 0;
|
||||
}
|
||||
}
|
||||
|
@ -413,7 +407,7 @@ void do_controlcen_frame(const vmobjptridx_t obj)
|
|||
if (dist_to_player > F1_0*300)
|
||||
{
|
||||
LevelUniqueControlCenterState.Control_center_been_hit = 0;
|
||||
Control_center_player_been_seen = player_visibility_state::no_line_of_sight;
|
||||
LevelUniqueControlCenterState.Control_center_player_been_seen = player_visibility_state::no_line_of_sight;
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -521,9 +515,8 @@ 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;
|
||||
LevelUniqueControlCenterState.Control_center_player_been_seen = player_visibility_state::no_line_of_sight;
|
||||
LevelUniqueControlCenterState.Frametime_until_next_fire = 0;
|
||||
|
||||
LevelUniqueControlCenterState.Dead_controlcen_object_num = object_none;
|
||||
}
|
||||
|
||||
|
|
|
@ -1234,7 +1234,7 @@ int state_save_all_sub(const char *filename, const char *desc)
|
|||
PHYSFS_write(fp, &Control_center_been_hit, sizeof(int), 1);
|
||||
}
|
||||
{
|
||||
const auto cc = static_cast<int>(Control_center_player_been_seen);
|
||||
const auto cc = static_cast<int>(LevelUniqueControlCenterState.Control_center_player_been_seen);
|
||||
PHYSFS_write(fp, &cc, sizeof(int), 1);
|
||||
}
|
||||
PHYSFS_write(fp, &LevelUniqueControlCenterState.Frametime_until_next_fire, sizeof(int), 1);
|
||||
|
@ -1865,7 +1865,7 @@ int state_restore_all_sub(const d_level_shared_destructible_light_state &LevelSh
|
|||
LevelUniqueControlCenterState.Control_center_been_hit = PHYSFSX_readSXE32(fp, swap);
|
||||
{
|
||||
const int cc = PHYSFSX_readSXE32(fp, swap);
|
||||
Control_center_player_been_seen = static_cast<player_visibility_state>(cc);
|
||||
LevelUniqueControlCenterState.Control_center_player_been_seen = static_cast<player_visibility_state>(cc);
|
||||
}
|
||||
LevelUniqueControlCenterState.Frametime_until_next_fire = PHYSFSX_readSXE32(fp, swap);
|
||||
LevelUniqueControlCenterState.Control_center_present = PHYSFSX_readSXE32(fp, swap);
|
||||
|
|
Loading…
Reference in a new issue