90 lines
2.0 KiB
C#
90 lines
2.0 KiB
C#
using Michsky.UI.Heat;
|
|
using Obvious.Soap;
|
|
using UFS3;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class UI_ItemDataButton : MonoBehaviour
|
|
{
|
|
private BaseItemData _ItemData;
|
|
|
|
public PlayerProfile PlayerProfile;
|
|
|
|
public ScriptableEventNoParam OnNotRequiredMoneyHave;
|
|
|
|
public ScriptableEventNoParam OnPurshare;
|
|
|
|
[SerializeField]
|
|
private ShopButtonManager _ShopButtonManager;
|
|
|
|
[SerializeField]
|
|
private IntVariable _Shop_CurrentItemIDSelected;
|
|
|
|
[SerializeField]
|
|
private CanvasGroup _Highlight;
|
|
|
|
[SerializeField]
|
|
private Image _PurchaseButtonBackground;
|
|
|
|
[SerializeField]
|
|
private ItemButtonParameters _ItemButtonParameters;
|
|
|
|
private void OnEnable()
|
|
{
|
|
_Shop_CurrentItemIDSelected.OnValueChanged += CurrentItemIDSelectedInShop_OnValueChanged;
|
|
OnPurshare.OnRaised += CheckIsAvailableByPrice;
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
_Shop_CurrentItemIDSelected.OnValueChanged -= CurrentItemIDSelectedInShop_OnValueChanged;
|
|
OnPurshare.OnRaised -= CheckIsAvailableByPrice;
|
|
}
|
|
|
|
private void CurrentItemIDSelectedInShop_OnValueChanged(int id)
|
|
{
|
|
CheckIsAvailableByPrice();
|
|
}
|
|
|
|
public void OnButtonClick()
|
|
{
|
|
_Shop_CurrentItemIDSelected.Value = _ItemData.ID;
|
|
_ShopButtonManager.OnPointerEnter(null);
|
|
}
|
|
|
|
public void Initialize(BaseItemData itemData)
|
|
{
|
|
_ItemData = itemData;
|
|
Refresh();
|
|
}
|
|
|
|
public void AddItem()
|
|
{
|
|
if (PlayerProfile.Money < _ItemData.Price)
|
|
{
|
|
OnNotRequiredMoneyHave.Raise();
|
|
return;
|
|
}
|
|
PlayerProfile.AddItem(Object.Instantiate(_ItemData));
|
|
PlayerProfile.Money -= _ItemData.Price;
|
|
OnPurshare.Raise();
|
|
}
|
|
|
|
private void CheckIsAvailableByPrice()
|
|
{
|
|
_Highlight.alpha = ((_Shop_CurrentItemIDSelected.Value == _ItemData.ID) ? 1 : 0);
|
|
_PurchaseButtonBackground.color = ((PlayerProfile.Money < _ItemData.Price) ? _ItemButtonParameters.itemBlockedColor : _ItemButtonParameters.itemAvailableColor);
|
|
}
|
|
|
|
public void Refresh()
|
|
{
|
|
if ((bool)_ItemData)
|
|
{
|
|
_ShopButtonManager.SetText(_ItemData.name);
|
|
_ShopButtonManager.SetIcon(_ItemData.Icon);
|
|
_ShopButtonManager.SetPrice(_ItemData.Price.ToString());
|
|
CheckIsAvailableByPrice();
|
|
}
|
|
}
|
|
}
|