CapersProject/Assets/02.Scripts/DDD/Ui/Tycoon/TodayMenuButton.cs
2025-02-18 06:47:56 +09:00

95 lines
2.3 KiB
C#

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}";
}
}
}