mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-22 12:11:25 +00:00
Add PlayerSpawned() event (#1118)
* Add PlayerSpawned() event * add playerspawned to DStaticEventHandler * Define PlyerSpawned() correctly
This commit is contained in:
parent
b5af2fc2eb
commit
d2a9de0012
4 changed files with 25 additions and 0 deletions
|
@ -418,6 +418,14 @@ void EventManager::PlayerEntered(int num, bool fromhub)
|
|||
handler->PlayerEntered(num, fromhub);
|
||||
}
|
||||
|
||||
void EventManager::PlayerSpawned(int num)
|
||||
{
|
||||
if (ShouldCallStatic(true)) staticEventManager.PlayerSpawned(num);
|
||||
|
||||
for (DStaticEventHandler* handler = FirstEventHandler; handler; handler = handler->next)
|
||||
handler->PlayerSpawned(num);
|
||||
}
|
||||
|
||||
void EventManager::PlayerRespawned(int num)
|
||||
{
|
||||
if (ShouldCallStatic(true)) staticEventManager.PlayerRespawned(num);
|
||||
|
@ -998,6 +1006,18 @@ void DStaticEventHandler::PlayerEntered(int num, bool fromhub)
|
|||
}
|
||||
}
|
||||
|
||||
void DStaticEventHandler::PlayerSpawned(int num)
|
||||
{
|
||||
IFVIRTUAL(DStaticEventHandler, PlayerSpawned)
|
||||
{
|
||||
// don't create excessive DObjects if not going to be processed anyway
|
||||
if (isEmpty(func)) return;
|
||||
FPlayerEvent e = { num, false };
|
||||
VMValue params[2] = { (DStaticEventHandler*)this, &e };
|
||||
VMCall(func, params, 2, nullptr, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void DStaticEventHandler::PlayerRespawned(int num)
|
||||
{
|
||||
IFVIRTUAL(DStaticEventHandler, PlayerRespawned)
|
||||
|
|
|
@ -97,6 +97,7 @@ public:
|
|||
|
||||
//
|
||||
void PlayerEntered(int num, bool fromhub);
|
||||
void PlayerSpawned(int num);
|
||||
void PlayerRespawned(int num);
|
||||
void PlayerDied(int num);
|
||||
void PlayerDisconnected(int num);
|
||||
|
@ -263,6 +264,8 @@ struct EventManager
|
|||
void RenderUnderlay(EHudState state);
|
||||
// this executes when a player enters the level (once). PlayerEnter+inhub = RETURN
|
||||
void PlayerEntered(int num, bool fromhub);
|
||||
// this executes at the same time as ENTER scripts
|
||||
void PlayerSpawned(int num);
|
||||
// this executes when a player respawns. includes resurrect cheat.
|
||||
void PlayerRespawned(int num);
|
||||
// this executes when a player dies (partially duplicating worldthingdied, but whatever)
|
||||
|
|
|
@ -5260,6 +5260,7 @@ AActor *FLevelLocals::SpawnPlayer (FPlayerStart *mthing, int playernum, int flag
|
|||
if (state == PST_ENTER || (state == PST_LIVE && !savegamerestore))
|
||||
{
|
||||
Behaviors.StartTypedScripts (SCRIPT_Enter, p->mo, true);
|
||||
localEventManager->PlayerSpawned(PlayerNum(p));
|
||||
}
|
||||
else if (state == PST_REBORN)
|
||||
{
|
||||
|
|
|
@ -340,6 +340,7 @@ class StaticEventHandler : Object native play version("2.4")
|
|||
|
||||
//
|
||||
virtual void PlayerEntered(PlayerEvent e) {}
|
||||
virtual void PlayerSpawned(PlayerEvent e) {}
|
||||
virtual void PlayerRespawned(PlayerEvent e) {}
|
||||
virtual void PlayerDied(PlayerEvent e) {}
|
||||
virtual void PlayerDisconnected(PlayerEvent e) {}
|
||||
|
|
Loading…
Reference in a new issue