using System; using DDD.ScriptableObjects; using Sirenix.OdinInspector; using TMPro; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; namespace DDD.Uis.Tycoon { public class TodayMenuButton : MonoBehaviour { [Title("컴포넌트")] [SerializeField] private Button _button; [SerializeField] private GameObject _addMenuText; [SerializeField] private GameObject _addedPanel; [SerializeField] private Image _image; [SerializeField] private TMP_Text _nameText; [SerializeField] private TMP_Text _countText; [field: Title("실시간 데이터")] [field: SerializeField] [field: DisableIf("@true")] public bool IsAddedMenu { get; private set; } public CraftRecipeData AddedCraftRecipeData { get; private set; } public int AddedCount; private UnityAction _clickAction; private void Start() { if (IsAddedMenu) { _addMenuText.SetActive(false); _addedPanel.SetActive(true); } else { _addMenuText.SetActive(true); _addedPanel.SetActive(false); } } private void OnDestroy() { UnregisterButtonListener(); } public void RegisterButtonListener(UnityAction clickAction) { _clickAction = clickAction; _button.onClick.AddListener(_clickAction); } private void UnregisterButtonListener() { if (_clickAction == null) return; _button.onClick.RemoveListener(_clickAction); _clickAction = null; } public void AddedMenu(CraftRecipeData craftRecipeData, int count) { if (IsAddedMenu && AddedCraftRecipeData != null) { AddedCount += count; } else { AddedCraftRecipeData = craftRecipeData; AddedCount = count; IsAddedMenu = true; } _addMenuText.SetActive(false); _addedPanel.SetActive(true); _nameText.text = AddedCraftRecipeData.Name; _countText.text = $"x{AddedCount}"; } } }