From d9d536afdac738a7fcd566ae1d7aeaccc1b80f0a Mon Sep 17 00:00:00 2001 From: Kp Date: Thu, 15 Aug 2019 01:34:22 +0000 Subject: [PATCH] Move Control_center_player_been_seen to d_level_unique_control_center_state --- common/main/ai.h | 2 -- common/main/object.h | 1 + similar/main/cntrlcen.cpp | 21 +++++++-------------- similar/main/state.cpp | 4 ++-- 4 files changed, 10 insertions(+), 18 deletions(-) diff --git a/common/main/ai.h b/common/main/ai.h index 8345f2e54..7882e9a26 100644 --- a/common/main/ai.h +++ b/common/main/ai.h @@ -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 { diff --git a/common/main/object.h b/common/main/object.h index 7d405ca55..b27ac8eb6 100644 --- a/common/main/object.h +++ b/common/main/object.h @@ -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; diff --git a/similar/main/cntrlcen.cpp b/similar/main/cntrlcen.cpp index cf6c33066..8263def85 100644 --- a/similar/main/cntrlcen.cpp +++ b/similar/main/cntrlcen.cpp @@ -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; } diff --git a/similar/main/state.cpp b/similar/main/state.cpp index 435201ff4..68db8bf31 100644 --- a/similar/main/state.cpp +++ b/similar/main/state.cpp @@ -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(Control_center_player_been_seen); + const auto cc = static_cast(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(cc); + LevelUniqueControlCenterState.Control_center_player_been_seen = static_cast(cc); } LevelUniqueControlCenterState.Frametime_until_next_fire = PHYSFSX_readSXE32(fp, swap); LevelUniqueControlCenterState.Control_center_present = PHYSFSX_readSXE32(fp, swap);