#pragma once namespace Components { class Events : public Component { public: typedef void(ClientCallback)(int clientNum); typedef void(Callback)(); Events(); // Server side static void OnClientDisconnect(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 SteamDisconnectSignal; static Utils::Signal ShutdownSystemSignal; static Utils::Signal ClientInitSignal; static Utils::Signal ServerInitSignal; static void ClientDisconnect_Hk(int clientNum); static void SteamDisconnect_Hk(); static void Scr_ShutdownSystem_Hk(unsigned char sys); static void CL_InitOnceForAllClients_HK(); static void SV_Init_Hk(); }; }