# ConfigurableEventManager Implementation Guide ## What is ConfigurableEventManager? The ConfigurableEventManager is a Godot Node that provides a visual, inspector-based way to define and manage events in your game without writing code for each event. ## How to Set It Up ### Step 1: Add EventManager to Your Scene 1. Open `Scenes/Main.tscn` in Godot 2. The EventManager node should already be added as a child of Main 3. Select the EventManager node in the scene tree ### Step 2: Create GameEventResource Assets You need to create `.tres` resource files that define your events: 1. In Godot, right-click in the FileSystem dock → **New Resource** 2. Search for **GameEventResource** and select it 3. Click **Create** 4. Save it in `Resources/Events/` (you may need to create this folder) Example event resources to create: #### GameStarted.tres - **Event Name**: `GameStarted` - **Description**: `Fired when the game begins` - **Parameter Count**: `0` - **Category**: `Game` #### ScoreChanged.tres - **Event Name**: `ScoreChanged` - **Description**: `Fired when player score changes` - **Parameter Count**: `1` - **Parameter1 Type**: `int` - **Parameter1 Description**: `The new score value` - **Category**: `Player` #### PlayerLevelUp.tres - **Event Name**: `PlayerLevelUp` - **Description**: `Fired when player gains a level` - **Parameter Count**: `2` - **Parameter1 Type**: `string` - **Parameter1 Description**: `Player name` - **Parameter2 Type**: `int` - **Parameter2 Description**: `New level number` - **Category**: `Player` ### Step 3: Configure EventManager in Inspector 1. Select the EventManager node in your scene 2. In the Inspector, find the **Events** array property 3. Click to expand it and set the **Size** to match your number of events (e.g., 3) 4. Drag your `.tres` event resource files into each array slot 5. Optionally enable **Enable Debug Logging** to see event activity in the console ### Step 4: Use Events in Your Scripts See `Scripts/EventExample.cs` for a complete example of: - Getting a reference to the EventManager - Subscribing to events - Raising events - Unsubscribing from events ## Key Benefits ✅ **Visual Configuration** - Define events in the Inspector without code ✅ **Type Safety** - Still get compile-time checking in C# ✅ **Documentation** - Event descriptions and parameter info built-in ✅ **Debug Logging** - Optional logging for all event activity ✅ **Validation** - Warns if you subscribe with wrong parameter count ## Usage Pattern ```csharp // 1. Get reference _eventManager = GetNode("/root/Main/EventManager"); // 2. Subscribe _eventManager.Subscribe("ScoreChanged", OnScoreChanged); // 3. Raise event somewhere _eventManager.Raise("ScoreChanged", 100); // 4. Unsubscribe when done _eventManager.Unsubscribe("ScoreChanged", OnScoreChanged); ``` ## Next Steps 1. Open the project in Godot 4.5 2. Create your GameEventResource assets in the editor 3. Add them to the EventManager's Events array 4. Use the example script as a template for your game objects 5. Enable debug logging to see events firing in real-time