Added PlayerThink hook

This commit is contained in:
Zachary McAlpin 2019-12-14 15:28:24 -06:00
parent 14f4fa2e9c
commit 87b816e408
3 changed files with 26 additions and 1 deletions

View File

@ -51,6 +51,7 @@ enum hook {
hook_PlayerCanDamage, hook_PlayerCanDamage,
hook_PlayerQuit, hook_PlayerQuit,
hook_IntermissionThinker, hook_IntermissionThinker,
hook_PlayerThink,
hook_MAX // last hook hook_MAX // last hook
}; };
@ -93,5 +94,6 @@ boolean LUAh_FollowMobj(player_t *player, mobj_t *mobj); // Hook for P_PlayerAft
UINT8 LUAh_PlayerCanDamage(player_t *player, mobj_t *mobj); // Hook for P_PlayerCanDamage UINT8 LUAh_PlayerCanDamage(player_t *player, mobj_t *mobj); // Hook for P_PlayerCanDamage
void LUAh_PlayerQuit(player_t *plr, int reason); // Hook for player quitting void LUAh_PlayerQuit(player_t *plr, int reason); // Hook for player quitting
void LUAh_IntermissionThinker(void); // Hook for Y_Ticker void LUAh_IntermissionThinker(void); // Hook for Y_Ticker
#define LUAh_PlayerThink(player) LUAh_PlayerHook(player, hook_PlayerThink) // Hook for P_PlayerThink
#endif #endif

View File

@ -62,6 +62,7 @@ const char *const hookNames[hook_MAX+1] = {
"PlayerCanDamage", "PlayerCanDamage",
"PlayerQuit", "PlayerQuit",
"IntermissionThinker", "IntermissionThinker",
"PlayerThink",
NULL NULL
}; };
@ -205,6 +206,7 @@ static int lib_addHook(lua_State *L)
case hook_PlayerCanDamage: case hook_PlayerCanDamage:
case hook_ShieldSpawn: case hook_ShieldSpawn:
case hook_ShieldSpecial: case hook_ShieldSpecial:
case hook_PlayerThink:
lastp = &playerhooks; lastp = &playerhooks;
break; break;
case hook_LinedefExecute: case hook_LinedefExecute:

View File

@ -11313,7 +11313,12 @@ void P_PlayerThink(player_t *player)
player->playerstate = PST_REBORN; player->playerstate = PST_REBORN;
} }
if (player->playerstate == PST_REBORN) if (player->playerstate == PST_REBORN)
{
#ifdef HAVE_BLUA
LUAh_PlayerThink(player);
#endif
return; return;
}
} }
#ifdef SEENAMES #ifdef SEENAMES
@ -11414,7 +11419,12 @@ void P_PlayerThink(player_t *player)
player->lives = 0; player->lives = 0;
if (player->playerstate == PST_DEAD) if (player->playerstate == PST_DEAD)
{
#ifdef HAVE_BLUA
LUAh_PlayerThink(player);
return; return;
#endif
}
} }
} }
@ -11533,7 +11543,9 @@ void P_PlayerThink(player_t *player)
{ {
player->mo->flags2 &= ~MF2_SHADOW; player->mo->flags2 &= ~MF2_SHADOW;
P_DeathThink(player); P_DeathThink(player);
#ifdef HAVE_BLUA
LUAh_PlayerThink(player);
#endif
return; return;
} }
@ -11574,7 +11586,12 @@ void P_PlayerThink(player_t *player)
if (player->spectator && cmd->buttons & BT_ATTACK && !player->powers[pw_flashing] && G_GametypeHasSpectators()) if (player->spectator && cmd->buttons & BT_ATTACK && !player->powers[pw_flashing] && G_GametypeHasSpectators())
{ {
if (P_SpectatorJoinGame(player)) if (P_SpectatorJoinGame(player))
{
#ifdef HAVE_BLUA
LUAh_PlayerThink(player);
#endif
return; // player->mo was removed. return; // player->mo was removed.
}
} }
// Even if not NiGHTS, pull in nearby objects when walking around as John Q. Elliot. // Even if not NiGHTS, pull in nearby objects when walking around as John Q. Elliot.
@ -11675,6 +11692,10 @@ void P_PlayerThink(player_t *player)
P_MovePlayer(player); P_MovePlayer(player);
} }
#ifdef HAVE_BLUA
LUAh_PlayerThink(player);
#endif
if (!player->mo) if (!player->mo)
return; // P_MovePlayer removed player->mo. return; // P_MovePlayer removed player->mo.