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