mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-26 05:51:20 +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);
|
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)
|
void EventManager::PlayerRespawned(int num)
|
||||||
{
|
{
|
||||||
if (ShouldCallStatic(true)) staticEventManager.PlayerRespawned(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)
|
void DStaticEventHandler::PlayerRespawned(int num)
|
||||||
{
|
{
|
||||||
IFVIRTUAL(DStaticEventHandler, PlayerRespawned)
|
IFVIRTUAL(DStaticEventHandler, PlayerRespawned)
|
||||||
|
|
|
@ -97,6 +97,7 @@ public:
|
||||||
|
|
||||||
//
|
//
|
||||||
void PlayerEntered(int num, bool fromhub);
|
void PlayerEntered(int num, bool fromhub);
|
||||||
|
void PlayerSpawned(int num);
|
||||||
void PlayerRespawned(int num);
|
void PlayerRespawned(int num);
|
||||||
void PlayerDied(int num);
|
void PlayerDied(int num);
|
||||||
void PlayerDisconnected(int num);
|
void PlayerDisconnected(int num);
|
||||||
|
@ -263,6 +264,8 @@ struct EventManager
|
||||||
void RenderUnderlay(EHudState state);
|
void RenderUnderlay(EHudState state);
|
||||||
// this executes when a player enters the level (once). PlayerEnter+inhub = RETURN
|
// this executes when a player enters the level (once). PlayerEnter+inhub = RETURN
|
||||||
void PlayerEntered(int num, bool fromhub);
|
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.
|
// this executes when a player respawns. includes resurrect cheat.
|
||||||
void PlayerRespawned(int num);
|
void PlayerRespawned(int num);
|
||||||
// this executes when a player dies (partially duplicating worldthingdied, but whatever)
|
// 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))
|
if (state == PST_ENTER || (state == PST_LIVE && !savegamerestore))
|
||||||
{
|
{
|
||||||
Behaviors.StartTypedScripts (SCRIPT_Enter, p->mo, true);
|
Behaviors.StartTypedScripts (SCRIPT_Enter, p->mo, true);
|
||||||
|
localEventManager->PlayerSpawned(PlayerNum(p));
|
||||||
}
|
}
|
||||||
else if (state == PST_REBORN)
|
else if (state == PST_REBORN)
|
||||||
{
|
{
|
||||||
|
|
|
@ -340,6 +340,7 @@ class StaticEventHandler : Object native play version("2.4")
|
||||||
|
|
||||||
//
|
//
|
||||||
virtual void PlayerEntered(PlayerEvent e) {}
|
virtual void PlayerEntered(PlayerEvent e) {}
|
||||||
|
virtual void PlayerSpawned(PlayerEvent e) {}
|
||||||
virtual void PlayerRespawned(PlayerEvent e) {}
|
virtual void PlayerRespawned(PlayerEvent e) {}
|
||||||
virtual void PlayerDied(PlayerEvent e) {}
|
virtual void PlayerDied(PlayerEvent e) {}
|
||||||
virtual void PlayerDisconnected(PlayerEvent e) {}
|
virtual void PlayerDisconnected(PlayerEvent e) {}
|
||||||
|
|
Loading…
Reference in a new issue