using System; using System.Collections.Generic; using System.Linq; using BlueWater.Items; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace BlueWater.Uis { public class CocktailRecipeButton : MonoBehaviour, ISelectHandler { [field: SerializeField] public Button Button { get; private set; } [SerializeField] private Image _cocktailImage; [SerializeField] private Material _grayScaleMaterial; [SerializeField] private string _cocktailIdx; public CocktailData CocktailData { get; private set; } private Action _onSelectedAction; private void OnDestroy() { _onSelectedAction = null; } public void Initialize() { CocktailData = ItemManager.Instance.CocktailDataSo.GetDataByIdx(_cocktailIdx); _cocktailImage.sprite = CocktailData.Sprite; } public void OnSelect(BaseEventData eventData) { _onSelectedAction?.Invoke(this); } public void CheckUnlock(HashSet unlockLiquidIdxs) { _cocktailImage.material = CocktailData.ValidIngredients.All(element => unlockLiquidIdxs.Contains(element.Idx)) ? null : _grayScaleMaterial; } public void AddSelectedAction(Action selectedAction) { _onSelectedAction += selectedAction; } } }