using System; namespace YachtDice.UI.Presentation { public sealed class GameInfoPresenter : IDisposable { private readonly GameInfoView _view; public event Action NewGameClicked; public event Action ShopClicked; public event Action InventoryClicked; public GameInfoPresenter(GameInfoView view) { _view = view; } public void Initialize() { _view.OnNewGameClicked += HandleNewGameClicked; _view.OnShopClicked += HandleShopClicked; _view.OnInventoryClicked += HandleInventoryClicked; } public void Dispose() { _view.OnNewGameClicked -= HandleNewGameClicked; _view.OnShopClicked -= HandleShopClicked; _view.OnInventoryClicked -= HandleInventoryClicked; } public void SetTurnText(int turn, int maxTurns) { _view.SetTurnText(turn, maxTurns); } public void SetRunInfoText(string text) { _view.SetRunInfoText(text); } public void SetCurrencyText(int amount) { _view.SetCurrencyText(amount); } public void SetShopButtonInteractable(bool interactable) { _view.SetShopButtonInteractable(interactable); } public void ShowGameOver(int finalScore) { _view.ShowGameOver(finalScore); } public void HideGameOver() { _view.HideGameOver(); } private void HandleNewGameClicked() { NewGameClicked?.Invoke(); } private void HandleShopClicked() { ShopClicked?.Invoke(); } private void HandleInventoryClicked() { InventoryClicked?.Invoke(); } } }