1#include <CS2Kit/Sdk/GameEventService.hpp>
2#include <CS2Kit/Sdk/GameInterfaces.hpp>
3#include <CS2Kit/Utils/Log.hpp>
10bool GameEventService::Initialize()
12 if (!GameInterfaces::Instance().GameEventManager)
14 Log::Warn(
"GameEventService: IGameEventManager2 not available.");
18 Log::Info(
"Game event service initialized.");
22IGameEvent* GameEventService::CreateEvent(
const char* name)
24 auto* mgr = GameInterfaces::Instance().GameEventManager;
28 return mgr->CreateEvent(name);
31bool GameEventService::FireEvent(IGameEvent* event,
bool dontBroadcast)
33 auto* mgr = GameInterfaces::Instance().GameEventManager;
37 return mgr->FireEvent(event, dontBroadcast);
40void GameEventService::FreeEvent(IGameEvent* event)
42 auto* mgr = GameInterfaces::Instance().GameEventManager;
44 mgr->FreeEvent(event);
47uint64_t GameEventService::Listen(
const char* eventName, EventCallback callback)
49 auto* mgr = GameInterfaces::Instance().GameEventManager;
53 if (_registeredEvents.find(eventName) == _registeredEvents.end())
55 mgr->AddListener(
this, eventName,
true);
56 _registeredEvents.insert(eventName);
59 uint64_t
id = _nextListenerId++;
60 _listeners[id] = {eventName, std::move(callback)};
64void GameEventService::RemoveListener(uint64_t
id)
69void GameEventService::FireGameEvent(IGameEvent* event)
74 const char* eventName =
event->GetName();
78 for (
auto& [
id, listener] : _listeners)
80 if (listener.EventName == eventName && listener.Callback)
82 listener.Callback(event);