using Godot; using System; namespace GameJamDungeon; public interface IGameEventDepot : IDisposable { event Action? OverworldEntered; public void OnOverworldEntered(); event Action? DungeonAThemeAreaEntered; public void OnDungeonAThemeAreaEntered(); event Action? DungeonBThemeAreaEntered; public void OnDungeonBThemeAreaEntered(); event Action? DungeonCThemeAreaEntered; public void OnDungeonCThemeAreaEntered(); event Action? TeleportEntered; public void OnTeleportEntered(); event Action? MenuScrolled; public void OnMenuScrolled(); event Action? MenuBackedOut; public void OnMenuBackedOut(); event Action? EquippedWeapon; public void OnEquippedWeapon(Weapon equippedWeapon); event Action? UnequippedWeapon; public void OnUnequippedWeapon(); event Action? EquippedArmor; public void OnEquippedArmor(Armor equippedArmor); event Action? UnequippedArmor; public void OnUnequippedArmor(); event Action? EquippedAccessory; public void OnEquippedAccessory(Accessory equippedAccessory); event Action? UnequippedAccessory; public void OnUnequippedAccessory(); event Action? InventorySorted; public void OnInventorySorted(); event Action? HealingItemConsumed; public void OnHealingItemConsumed(ConsumableItemStats item); event Action? EnemyDefeated; public void OnEnemyDefeated(Vector3 position, EnemyStatResource enemyStatResource); event Action? RestorativePickedUp; public void OnRestorativePickedUp(Restorative restorative); } public class GameEventDepot : IGameEventDepot { public event Action? OverworldEntered; public event Action? DungeonAThemeAreaEntered; public event Action? DungeonBThemeAreaEntered; public event Action? DungeonCThemeAreaEntered; public event Action? TeleportEntered; public event Action? MenuScrolled; public event Action? MenuBackedOut; public event Action? EquippedWeapon; public event Action? UnequippedWeapon; public event Action? EquippedArmor; public event Action? UnequippedArmor; public event Action? EquippedAccessory; public event Action? UnequippedAccessory; public event Action? InventorySorted; public event Action? HealingItemConsumed; public event Action? RestorativePickedUp; public event Action? EnemyDefeated; public void OnOverworldEntered() => OverworldEntered?.Invoke(); public void OnDungeonAThemeAreaEntered() => DungeonAThemeAreaEntered?.Invoke(); public void OnDungeonBThemeAreaEntered() => DungeonBThemeAreaEntered?.Invoke(); public void OnDungeonCThemeAreaEntered() => DungeonCThemeAreaEntered?.Invoke(); public void OnTeleportEntered() => TeleportEntered?.Invoke(); public void OnMenuScrolled() => MenuScrolled?.Invoke(); public void OnMenuBackedOut() => MenuBackedOut?.Invoke(); public void OnEquippedWeapon(Weapon equippedWeapon) => EquippedWeapon?.Invoke(equippedWeapon); public void OnUnequippedWeapon() => UnequippedWeapon?.Invoke(); public void OnEquippedArmor(Armor equippedArmor) => EquippedArmor?.Invoke(equippedArmor); public void OnUnequippedArmor() => UnequippedArmor?.Invoke(); public void OnEquippedAccessory(Accessory equippedAccessory) => EquippedAccessory?.Invoke(equippedAccessory); public void OnUnequippedAccessory() => UnequippedAccessory?.Invoke(); public void OnInventorySorted() => InventorySorted?.Invoke(); public void OnHealingItemConsumed(ConsumableItemStats item) => HealingItemConsumed?.Invoke(item); public void OnRestorativePickedUp(Restorative restorative) => RestorativePickedUp?.Invoke(restorative); public void OnEnemyDefeated(Vector3 position, EnemyStatResource enemyStatResource) => EnemyDefeated?.Invoke(position, enemyStatResource); public void Dispose() { GC.SuppressFinalize(this); } }