OldBlueWater/BlueWater/Assets/02.Scripts/Ui/DiscardPopupUi.cs

88 lines
2.8 KiB
C#

using System.Collections.Generic;
using Sirenix.OdinInspector;
using TMPro;
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class DiscardPopupUi : MonoBehaviour
{
private enum RemoveType
{
NONE = 0,
SINGLE,
MULTI
}
[SerializeField, Required] private TMP_Text contentText;
[SerializeField, Required] private TMP_Text countText;
[SerializeField, Required] private GameObject countSelectUi;
private List<ItemSlotUi> selectedList = new();
private int currentCount = 1;
private RemoveType removeType;
public void DiscardMessage(ItemSlotUi selectedSlot)
{
removeType = RemoveType.SINGLE;
selectedList.Clear();
selectedList.Add(selectedSlot);
contentText.text = ItemManager.Inst.ItemDictionary[selectedSlot.ItemSlot.Idx].name + "을(를) 버리시겠습니까?";
currentCount = 1;
countText.text = currentCount.ToString();
countSelectUi.SetActive(true);
gameObject.SetActive(true);
}
public void DiscardAllMessage(List<ItemSlotUi> selectedSlotList)
{
removeType = RemoveType.MULTI;
selectedList = new List<ItemSlotUi>(selectedSlotList);
contentText.text = "선택한 물품을 모두 버리시겠습니까?";
countSelectUi.SetActive(false);
gameObject.SetActive(true);
}
public void CountDownButton()
{
currentCount--;
currentCount = Mathf.Clamp(currentCount, 1, selectedList[0].ItemSlot.Count);
countText.text = currentCount.ToString();
}
public void CountUpButton()
{
currentCount++;
currentCount = Mathf.Clamp(currentCount , 1, selectedList[0].ItemSlot.Count);
countText.text = currentCount.ToString();
}
public void DiscardButton()
{
if (removeType == RemoveType.SINGLE)
{
DataManager.Inst.CurrentInventory.RemoveItem(selectedList[0].ItemSlot, currentCount);
}
else if (removeType == RemoveType.MULTI)
{
foreach (var element in selectedList)
{
DataManager.Inst.CurrentInventory.RemoveItem(element.ItemSlot, element.ItemSlot.Count);
}
}
CancelButton();
}
public void CancelButton()
{
removeType = RemoveType.NONE;
selectedList.Clear();
countSelectUi.SetActive(false);
gameObject.SetActive(false);
}
}
}