55 lines
1.5 KiB
C#
55 lines
1.5 KiB
C#
![]() |
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<CocktailRecipeButton> _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<string> unlockLiquidIdxs)
|
||
|
{
|
||
|
_cocktailImage.material = CocktailData.ValidIngredients.All(element => unlockLiquidIdxs.Contains(element.Idx)) ? null : _grayScaleMaterial;
|
||
|
}
|
||
|
|
||
|
public void AddSelectedAction(Action<CocktailRecipeButton> selectedAction)
|
||
|
{
|
||
|
_onSelectedAction += selectedAction;
|
||
|
}
|
||
|
}
|
||
|
}
|