From 1dcacefc9cf6c426d55ba473625bcfa2ad44e437 Mon Sep 17 00:00:00 2001 From: Kp Date: Sun, 2 Oct 2016 00:34:47 +0000 Subject: [PATCH] Pass player object to check_trigger --- common/main/switch.h | 2 +- similar/main/collide.cpp | 2 +- similar/main/newdemo.cpp | 7 ++++--- similar/main/object.cpp | 2 +- similar/main/switch.cpp | 8 ++++---- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/common/main/switch.h b/common/main/switch.h index 9e0ea1548..705b2c35e 100644 --- a/common/main/switch.h +++ b/common/main/switch.h @@ -168,7 +168,7 @@ constexpr uint8_t trigger_none = 0xff; extern void trigger_init(); namespace dsx { -void check_trigger(vcsegptridx_t seg, short side, vcobjptridx_t objnum, int shot); +void check_trigger(vcsegptridx_t seg, short side, object &plrobj, vcobjptridx_t objnum, int shot); int check_trigger_sub(object &, trgnum_t trigger_num, int player_num,int shot); static inline int trigger_is_exit(const trigger *t) diff --git a/similar/main/collide.cpp b/similar/main/collide.cpp index 4c55d3079..5a7b86ff7 100644 --- a/similar/main/collide.cpp +++ b/similar/main/collide.cpp @@ -784,7 +784,7 @@ static void collide_weapon_and_wall(const vobjptridx_t weapon, const vsegptridx_ //because robots can shoot out wall triggers, and so the trigger better //take effect // NO -- Changed by MK, 10/18/95. We don't want robots blowing puzzles. Only player or buddy can open! - check_trigger(hitseg, hitwall, vcobjptridx(weapon->ctype.laser_info.parent_num), 1); + check_trigger(hitseg, hitwall, plrobj, vcobjptridx(weapon->ctype.laser_info.parent_num), 1); } if (get_weapon_id(weapon) == weapon_id_type::EARTHSHAKER_ID) diff --git a/similar/main/newdemo.cpp b/similar/main/newdemo.cpp index 0a6cfa6b3..f5727c3ff 100644 --- a/similar/main/newdemo.cpp +++ b/similar/main/newdemo.cpp @@ -1929,7 +1929,8 @@ static int newdemo_read_frame_information(int rewrite) } reset_objects(1); - get_local_plrobj().ctype.player_info.homing_object_dist = -1; + auto &plrobj = get_local_plrobj(); + plrobj.ctype.player_info.homing_object_dist = -1; prev_obj = NULL; @@ -2241,12 +2242,12 @@ static int newdemo_read_frame_information(int rewrite) break; } if (!truth) - check_trigger(segp, side, vobjptridx(objnum), shot); + check_trigger(segp, side, plrobj, vobjptridx(objnum), shot); } else if (!rewrite) #endif { if (Newdemo_vcr_state != ND_STATE_PAUSED) - check_trigger(segp, side, vobjptridx(objnum), shot); + check_trigger(segp, side, plrobj, vobjptridx(objnum), shot); } } } diff --git a/similar/main/object.cpp b/similar/main/object.cpp index 929ea0acb..176660f2c 100644 --- a/similar/main/object.cpp +++ b/similar/main/object.cpp @@ -1742,7 +1742,7 @@ static void object_move_one(const vobjptridx_t obj) const auto connect_side = find_connect_side(seg1, seg0); if (connect_side != side_none) { - check_trigger(seg0, connect_side, obj,0); + check_trigger(seg0, connect_side, get_local_plrobj(), obj, 0); #if defined(DXX_BUILD_DESCENT_II) //maybe we've gone on to the next level. if so, bail! if (Current_level_num != old_level) diff --git a/similar/main/switch.cpp b/similar/main/switch.cpp index a1fef9317..31c219a68 100644 --- a/similar/main/switch.cpp +++ b/similar/main/switch.cpp @@ -483,15 +483,15 @@ int check_trigger_sub(object &plrobj, const trgnum_t trigger_num, int pnum,int s //----------------------------------------------------------------- // Checks for a trigger whenever an object hits a trigger side. -void check_trigger(const vcsegptridx_t seg, short side, const vcobjptridx_t objnum, int shot) +void check_trigger(const vcsegptridx_t seg, short side, object &plrobj, const vcobjptridx_t objnum, int shot) { if ((Game_mode & GM_MULTI) && (get_local_player().connected != CONNECT_PLAYING)) // as a host we may want to handle triggers for our clients. so this function may be called when we are not playing. return; #if defined(DXX_BUILD_DESCENT_I) - if (objnum == get_local_player().objnum) + if (objnum == &plrobj) #elif defined(DXX_BUILD_DESCENT_II) - if (objnum == get_local_player().objnum || (objnum->type == OBJ_ROBOT && Robot_info[get_robot_id(objnum)].companion)) + if (objnum == &plrobj || (objnum->type == OBJ_ROBOT && Robot_info[get_robot_id(objnum)].companion)) #endif { @@ -510,7 +510,7 @@ void check_trigger(const vcsegptridx_t seg, short side, const vcobjptridx_t objn if (trigger_num == trigger_none) return; - if (check_trigger_sub(get_local_plrobj(), trigger_num, Player_num,shot)) + if (check_trigger_sub(plrobj, trigger_num, Player_num,shot)) return; #if defined(DXX_BUILD_DESCENT_I)