22 std::cout <<
"[BTEventTypeRegistry] Successfully loaded " <<
s_eventTypes.size()
23 <<
" event types from JSON" << std::endl;
28 std::cout <<
"[BTEventTypeRegistry] Failed to load from JSON, using hardcoded defaults" << std::endl;
36 std::ifstream
file(filepath);
39 std::cerr <<
"[BTEventTypeRegistry] Could not open file: " << filepath << std::endl;
50 std::cerr <<
"[BTEventTypeRegistry] Invalid JSON: missing 'eventTypes' array" << std::endl;
60 if (!
entry.contains(
"id") || !
entry.contains(
"displayName"))
62 std::cerr <<
"[BTEventTypeRegistry] Skipping invalid entry (missing required fields)" << std::endl;
67 eventType.
id =
entry[
"id"].get<std::string>();
76 std::cout <<
"[BTEventTypeRegistry] Loaded: " << eventType.
displayName
77 <<
" (" << eventType.
category <<
")" << std::endl;
82 catch (
const std::exception&
e)
84 std::cerr <<
"[BTEventTypeRegistry] JSON parsing error: " <<
e.what() << std::endl;
95 std::vector<EventTypeEntry>
defaults = {
96 {
"Olympe_EventType_Object_Activate",
"Object Activate",
"Gameplay",
"Trigger object activation",
"Objects"},
97 {
"Olympe_EventType_Object_Deactivate",
"Object Deactivate",
"Gameplay",
"Trigger object deactivation",
"Objects"},
98 {
"Olympe_EventType_Object_Create",
"Object Create",
"Gameplay",
"Object created",
"Objects"},
99 {
"Olympe_EventType_Object_Destroy",
"Object Destroy",
"Gameplay",
"Object destroyed",
"Objects"},
100 {
"Olympe_EventType_Object_CollideEvent",
"Object Collide",
"Collision",
"Object collision event",
"Collision"},
101 {
"Olympe_EventType_Level_Load",
"Level Load",
"System",
"Level loaded",
"Level"},
102 {
"Olympe_EventType_Level_Unload",
"Level Unload",
"System",
"Level unloaded",
"Level"},
103 {
"Olympe_EventType_Game_Pause",
"Game Pause",
"System",
"Game paused",
"Game"},
104 {
"Olympe_EventType_Game_Resume",
"Game Resume",
"System",
"Game resumed",
"Game"},
105 {
"Olympe_EventType_AI_Explosion",
"AI Explosion",
"Gameplay",
"Explosion detected",
"AI Stimulus"},
106 {
"Olympe_EventType_AI_Noise",
"AI Noise",
"Gameplay",
"Noise detected",
"AI Stimulus"},
107 {
"Olympe_EventType_AI_DamageDealt",
"AI Damage",
"Gameplay",
"Damage dealt",
"AI Stimulus"},
108 {
"Olympe_EventType_Keyboard_KeyDown",
"Key Down",
"Input",
"Keyboard key pressed",
"Input"},
109 {
"Olympe_EventType_Mouse_ButtonDown",
"Mouse Button Down",
"Input",
"Mouse button pressed",
"Input"},
110 {
"Olympe_EventType_Camera_Shake",
"Camera Shake",
"Camera",
"Start camera shake",
"Camera"},
111 {
"Olympe_EventType_Menu_Enter",
"Menu Enter",
"UI",
"Menu entered",
"Menu"},
120 std::cout <<
"[BTEventTypeRegistry] Initialized " <<
s_eventTypes.size() <<
" default event types" << std::endl;
127 Initialize(
"./Gamedata/BehaviorTree/EventTypes.json");
136 Initialize(
"./Gamedata/BehaviorTree/EventTypes.json");
167 std::vector<EventTypeEntry> result;
170 if (
entry.category == category)
172 result.push_back(
entry);
180 std::vector<std::string> categories;
183 if (std::find(categories.begin(), categories.end(),
entry.category) == categories.end())
185 categories.push_back(
entry.category);
188 std::sort(categories.begin(), categories.end());
202 Initialize(
"./Gamedata/BehaviorTree/EventTypes.json");
ComponentTypeID GetComponentTypeID_Static()
static bool Initialize(const std::string &filepath)
Initialize registry from JSON file with fallback.
static std::map< std::string, size_t > s_eventTypeMap
static std::string GetDisplayName(const std::string &id)
Get display name for event type id.
static std::vector< EventTypeEntry > s_eventTypes
static std::string GetCategory(const std::string &id)
Get category for event type id.
static std::vector< EventTypeEntry > GetEventTypesByCategory(const std::string &category)
Get all event types for a specific category.
static void InitializeDefaults()
Initialize default hardcoded event types (fallback)
static std::vector< std::string > GetAllCategories()
Get all unique categories.
static bool LoadFromJSON(const std::string &filepath)
Load event types from JSON file.
static bool Reload(const std::string &filepath)
Reload registry from file (for live editing)
static bool s_initialized
static const EventTypeEntry * GetEventTypeEntry(const std::string &id)
Get event type entry by id.
static bool IsValid(const std::string &id)
Check if event type is registered.
static const std::vector< EventTypeEntry > & GetAllEventTypes()
Get all registered event types.
static std::string GetDomain(const std::string &id)
Get domain for event type id.
Event type entry from JSON configuration.