Files
Ultimate-Fishing-Simulator-…/Assets/Scripts/Assembly-CSharp/UI_ItemDataButton.cs
2026-03-04 09:37:33 +08:00

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();
}
}
}