using Chickensoft.Introspection; using Chickensoft.LogicBlocks; using Zennysoft.Game.Implementation; namespace Zennysoft.Ma.Adapter; public partial class InGameUILogic { [Meta] public abstract partial record State : StateLogic { protected State() { OnAttach(() => { var gameRepo = Get(); gameRepo.AnnounceMessageOnMainScreenEvent += OnAnnounceMessageOnMainScreen; gameRepo.AnnounceMessageInInventoryEvent += OnAnnounceMessageInInventory; gameRepo.RemoveItemFromInventoryEvent += OnRemoveItemFromInventory; }); OnDetach(() => { var gameRepo = Get(); gameRepo.AnnounceMessageOnMainScreenEvent -= OnAnnounceMessageOnMainScreen; gameRepo.AnnounceMessageInInventoryEvent -= OnAnnounceMessageInInventory; gameRepo.RemoveItemFromInventoryEvent -= OnRemoveItemFromInventory; }); } private void OnAnnounceMessageOnMainScreen(string message) { Output(new Output.AnnounceMessageOnMainScreen(message)); } private void OnAnnounceMessageInInventory(string message) { Output(new Output.AnnounceMessageInInventory(message)); } private void OnRemoveItemFromInventory(InventoryItem item) => Output(new Output.RemoveItemFromInventory(item)); } }