계산대 로직 중간저장

This commit is contained in:
2026-04-23 15:44:45 +09:00
parent e1124c927b
commit c8c39ddbc8
10 changed files with 163 additions and 9 deletions

View File

@@ -1,7 +1,10 @@
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using VRShopping.Items;
using VRShopping.Player;
using VRShopping.Shopping;
using VRShopping.UI;
namespace VRShopping.Interact
@@ -12,20 +15,24 @@ public class CheckoutMachine : MonoBehaviour
[SerializeField] private Transform _rowContainer;
[SerializeField] private CheckoutProductionRow _rowPrefab;
private readonly Dictionary<string, CheckoutProductionRow> _rowByItemId = new();
private int _nextOrderNum = 1;
[SerializeField] private TMP_Text _checkoutSumField;
private void Start()
{
UpdateSumUI();
}
public void UpdateSumUI()
{
_checkoutSumField.text = CheckoutSum.ToString("N0");
if (_checkoutSumField != null)
_checkoutSumField.text = CheckoutSum.ToString("N0");
}
public void AddCheckoutProduction(ItemData itemData)
{
Debug.Log("추가버튼 누름");
if (itemData == null) return;
if (_rowByItemId.TryGetValue(itemData.ItemId, out CheckoutProductionRow row))
@@ -35,19 +42,27 @@ public void AddCheckoutProduction(ItemData itemData)
else
{
row = Instantiate(_rowPrefab, _rowContainer);
row.gameObject.SetActive(false); // OnEnable 지연
row.Bind(itemData, 1);
row.SetOrderNum(_nextOrderNum++);
Canvas.ForceUpdateCanvases();
LayoutRebuilder.ForceRebuildLayoutImmediate(_rowContainer as RectTransform);
row.gameObject.SetActive(true); // 바운드 확정 후 OnEnable
row.OnAddClicked += AddCheckoutProduction;
row.OnRemoveClicked += RemoveCheckoutProduction;
row.Bind(itemData, 1);
_rowByItemId[itemData.ItemId] = row;
}
CheckoutSum += itemData.FinalPrice;
UpdateSumUI();
}
public void RemoveCheckoutProduction(ItemData itemData)
{
Debug.Log("감소버튼 누름");
if (itemData == null) return;
if (!_rowByItemId.TryGetValue(itemData.ItemId, out CheckoutProductionRow row)) return;
@@ -62,6 +77,15 @@ public void RemoveCheckoutProduction(ItemData itemData)
{
row.Bind(itemData, row.Quantity - 1);
}
UpdateSumUI();
}
public List<CheckoutProductionRow> GetCheckoutList()
{
var list = new List<CheckoutProductionRow>(_rowByItemId.Values);
list.Sort((a, b) => a.OrderNum.CompareTo(b.OrderNum));
return list;
}
}
}