75 lines
2.9 KiB
C#
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());
|
|
}
|
|
}
|