Files
GameJamDungeon/Zennysoft.Game.Ma.Implementation/Audio/state/states/InGameAudioLogic.State.Enabled.cs
2025-03-26 23:13:01 -07:00

75 lines
2.9 KiB
C#

using Chickensoft.Introspection;
using Zennysoft.Game.Abstractions;
namespace Zennysoft.Ma.Adapter;
public partial class InGameAudioLogic
{
[Meta]
public partial record Enabled : State
{
public Enabled()
{
OnAttach(() =>
{
var player = Get<IPlayer>();
OnOverworldEntered();
var gameEventDepot = Get<IGameEventDepot>();
var gameRepo = Get<IGameRepo>();
gameEventDepot.OverworldEntered += OnOverworldEntered;
gameEventDepot.DungeonAThemeAreaEntered += OnDungeonAThemeEntered;
gameEventDepot.MenuScrolled += OnMenuScrolled;
gameEventDepot.MenuBackedOut += OnMenuBackedOut;
gameRepo.EquippedItem += OnEquippedItem;
gameRepo.UnequippedItem += OnUnequippedItem;
gameEventDepot.InventorySorted += OnInventorySorted;
gameEventDepot.HealingItemConsumed += OnHealingItemConsumed;
gameRepo.RestorativePickedUp += OnRestorativePickedUp;
gameEventDepot.TeleportEntered += OnTeleportEntered;
gameRepo.PlayerAttack += OnPlayerAttack;
gameRepo.PlayerAttackedWall += OnPlayerAttackWall;
});
OnDetach(() =>
{
var gameEventDepot = Get<IGameEventDepot>();
var player = Get<IPlayer>();
var gameRepo = Get<IGameRepo>();
gameEventDepot.OverworldEntered -= OnOverworldEntered;
gameEventDepot.DungeonAThemeAreaEntered -= OnDungeonAThemeEntered;
gameEventDepot.MenuScrolled -= OnMenuScrolled;
gameEventDepot.MenuBackedOut -= OnMenuBackedOut;
gameRepo.EquippedItem -= OnEquippedItem;
gameRepo.UnequippedItem -= OnUnequippedItem;
gameEventDepot.InventorySorted -= OnInventorySorted;
gameEventDepot.TeleportEntered -= OnTeleportEntered;
gameRepo.PlayerAttack -= OnPlayerAttack;
gameRepo.PlayerAttackedWall -= OnPlayerAttackWall;
});
}
private void OnPlayerAttack() => Output(new Output.PlayPlayerAttackSound());
private void OnPlayerAttackWall() => Output(new Output.PlayPlayerAttackWallSound());
private void OnRestorativePickedUp(IHealthPack restorative) => Output(new Output.PlayHealingItemSound());
private void OnMenuBackedOut() => Output(new Output.PlayMenuBackSound());
private void OnHealingItemConsumed(InventoryItem stats) => Output(new Output.PlayHealingItemSound());
private void OnInventorySorted() => Output(new Output.PlayInventorySortedSound());
private void OnEquippedItem(InventoryItem equipableItem) => Output(new Output.PlayEquipSound());
private void OnUnequippedItem(InventoryItem equipableItem) => Output(new Output.PlayUnequipSound());
private void OnOverworldEntered() => Output(new Output.PlayOverworldMusic());
private void OnDungeonAThemeEntered() => Output(new Output.PlayDungeonThemeAMusic());
private void OnMenuScrolled() => Output(new Output.PlayMenuScrollSound());
private void OnTeleportEntered() => Output(new Output.PlayTeleportSound());
}
}