Files
YachtDice/Assets/Scripts/Shop/ShopController.cs
T
2026-02-28 19:25:26 +07:00

61 lines
1.7 KiB
C#

using UnityEngine;
using YachtDice.Economy;
using YachtDice.Modifiers;
namespace YachtDice.Shop
{
public class ShopController : MonoBehaviour
{
[SerializeField] private ShopCatalog catalog;
[SerializeField] private ShopView shopView;
[SerializeField] private CurrencyBank currencyBank;
private ShopModel model;
public ShopCatalog Catalog => catalog;
public void Initialize(ShopModel shopModel)
{
model = shopModel;
shopView.OnBuyClicked += HandleBuyClicked;
if (currencyBank != null)
currencyBank.OnBalanceChanged += HandleCurrencyChanged;
model.OnItemPurchased += HandleItemPurchased;
shopView.Populate(catalog.AvailableModifiers, model);
shopView.UpdateCurrencyDisplay(currencyBank != null ? currencyBank.Balance : 0);
}
private void OnDestroy()
{
if (shopView != null)
shopView.OnBuyClicked -= HandleBuyClicked;
if (currencyBank != null)
currencyBank.OnBalanceChanged -= HandleCurrencyChanged;
if (model != null)
model.OnItemPurchased -= HandleItemPurchased;
}
private void HandleBuyClicked(ModifierData data)
{
model.TryPurchase(data);
}
private void HandleCurrencyChanged(int newBalance)
{
shopView.UpdateCurrencyDisplay(newBalance);
shopView.RefreshStates(catalog.AvailableModifiers, model);
}
private void HandleItemPurchased(ModifierData data)
{
shopView.RefreshStates(catalog.AvailableModifiers, model);
}
}
}