Add script delegates matching common scripted events

This commit is contained in:
smallmodel 2025-02-02 19:18:55 +01:00
parent 1eb7458af9
commit e6cbd00871
No known key found for this signature in database
GPG key ID: 9F2D623CEDF08512
2 changed files with 21 additions and 2 deletions

View file

@ -58,6 +58,12 @@ const Vector power_color(0.0, 1.0, 0.0);
const Vector acolor(1.0, 1.0, 1.0);
const Vector bcolor(1.0, 0.0, 0.0);
ScriptDelegate Player::scriptDelegate_connected("player_connected", "Sent once when the player connected");
ScriptDelegate Player::scriptDelegate_disconnecting("player_disconnecting", "The player is disconnecting");
ScriptDelegate Player::scriptDelegate_spawned("player_spawned", "The player has spawned");
ScriptDelegate Player::scriptDelegate_damage("player_damage", "The player got hit");
ScriptDelegate Player::scriptDelegate_kill("player_killed", "The player got killed");
//
// mohaas 2.0 and above
//
@ -2264,6 +2270,8 @@ void Player::Init(void)
Event *ev = new Event;
ev->AddEntity(this);
scriptDelegate_connected.Trigger(*ev);
scriptedEvents[SE_CONNECTED].Trigger(ev);
}
@ -3217,6 +3225,7 @@ void Player::Killed(Event *ev)
event->AddInteger(ev->GetInteger(10));
event->AddEntity(this);
scriptDelegate_kill.Trigger(*event);
scriptedEvents[SE_KILL].Trigger(event);
Unregister(STRING_DEATH);
@ -9704,14 +9713,16 @@ void Player::ArmorDamage(Event *ev)
event->AddInteger(ev->GetInteger(10));
event->AddEntity(this);
scriptDelegate_damage.Trigger(*event);
scriptedEvents[SE_DAMAGE].Trigger(event);
}
void Player::Disconnect(void)
{
Event *ev = new Event;
ev->AddListener(this);
scriptDelegate_disconnecting.Trigger(*ev);
scriptedEvents[SE_DISCONNECTED].Trigger(ev);
// if (g_gametype->integer != GT_SINGLE_PLAYER) {
@ -12087,8 +12098,9 @@ bool Player::IsReady(void) const
void Player::Spawned(void)
{
Event *ev = new Event;
ev->AddEntity(this);
scriptDelegate_spawned.Trigger(*ev);
scriptedEvents[SE_SPAWN].Trigger(ev);
}

View file

@ -37,6 +37,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include "actor.h"
#include "vehicle.h"
#include "dm_manager.h"
#include "scriptdelegate.h"
extern Event EV_Player_EndLevel;
extern Event EV_Player_GiveCheat;
@ -313,6 +314,12 @@ private:
public:
MulticastDelegate<void (const str& text)> delegate_stufftext;
static ScriptDelegate scriptDelegate_connected;
static ScriptDelegate scriptDelegate_disconnecting;
static ScriptDelegate scriptDelegate_spawned;
static ScriptDelegate scriptDelegate_damage;
static ScriptDelegate scriptDelegate_kill;
public:
int m_iNumObjectives;
int m_iObjectivesCompleted;