#pragma once namespace Components { class Events : public Component { public: typedef void(ClientCallback)(int clientNum); typedef void(ClientConnectCallback)(Game::client_t* cl); typedef void(Callback)(); Events(); // Server side static void OnClientDisconnect(const Utils::Slot& callback); // Server side static void OnClientConnect(const Utils::Slot& callback); // Client side static void OnSteamDisconnect(const Utils::Slot& callback); static void OnVMShutdown(const Utils::Slot& callback); static void OnClientInit(const Utils::Slot& callback); // Client & Server (triggered once) static void OnSVInit(const Utils::Slot& callback); private: static Utils::Signal ClientDisconnectSignal; static Utils::Signal ClientConnectSignal; static Utils::Signal SteamDisconnectSignal; static Utils::Signal ShutdownSystemSignal; static Utils::Signal ClientInitSignal; static Utils::Signal ServerInitSignal; static void ClientDisconnect_Hk(int clientNum); static void SV_UserinfoChanged_Hk(Game::client_t* cl); static void SteamDisconnect_Hk(); static void Scr_ShutdownSystem_Hk(unsigned char sys); static void CL_InitOnceForAllClients_HK(); static void SV_Init_Hk(); }; }