66 lines
1.5 KiB
C#
66 lines
1.5 KiB
C#
using System;
|
|
using SepCore.Event;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
|
|
namespace SepCore.UI
|
|
{
|
|
public class ShopGoodsItem : MonoBehaviour
|
|
{
|
|
[SerializeField] private IconArea _iconArea;
|
|
|
|
[SerializeField] private TMP_Text _titleText;
|
|
|
|
[SerializeField] private TMP_Text _typeText;
|
|
|
|
[SerializeField] private TMP_Text _descriptionText;
|
|
|
|
[SerializeField] private TMP_Text _costText;
|
|
|
|
private int _index = -1;
|
|
|
|
private bool _listenersBound;
|
|
|
|
public void Init(GoodsItemContext data, int index)
|
|
{
|
|
EnsureListeners();
|
|
|
|
_index = index;
|
|
|
|
_iconArea.OnInit(data.Icon, data.Rarity);
|
|
_titleText.text = data.Name;
|
|
_typeText.text = data.TypeName;
|
|
_descriptionText.text = data.Description;
|
|
_costText.text = $"{data.Price} <sprite name=\"coin\" index=0>";
|
|
}
|
|
|
|
public void OnReset()
|
|
{
|
|
_index = -1;
|
|
}
|
|
|
|
private void EnsureListeners()
|
|
{
|
|
if (_listenersBound)
|
|
{
|
|
return;
|
|
}
|
|
|
|
_listenersBound = true;
|
|
|
|
CommonButton button = GetComponentInChildren<CommonButton>(true);
|
|
button.onClick.AddListener(OnPurchaseClick);
|
|
}
|
|
|
|
private void OnPurchaseClick()
|
|
{
|
|
if (_index < 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
GameEntry.Event.Fire(this, ShopPurchaseEventArgs.Create(_index));
|
|
}
|
|
}
|
|
}
|