Pass player object to check_trigger

This commit is contained in:
Kp 2016-10-02 00:34:47 +00:00
parent 171e303adb
commit 1dcacefc9c
5 changed files with 11 additions and 10 deletions

View file

@ -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)

View file

@ -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)

View file

@ -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);
}
}
}

View file

@ -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)

View file

@ -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)