using System.Collections.Generic; using TMPro; using UnityEngine; using VRShopping.Items; using VRShopping.UI; namespace VRShopping.Interact { public class CheckoutMachine : MonoBehaviour { public int CheckoutSum { get; private set; } [SerializeField] private Transform _rowContainer; [SerializeField] private CheckoutProductionRow _rowPrefab; private readonly Dictionary _rowByItemId = new(); [SerializeField] private TMP_Text _checkoutSumField; public void UpdateSumUI() { _checkoutSumField.text = CheckoutSum.ToString("N0"); } public void AddCheckoutProduction(ItemData itemData) { Debug.Log("추가버튼 누름"); if (itemData == null) return; if (_rowByItemId.TryGetValue(itemData.ItemId, out CheckoutProductionRow row)) { row.Bind(itemData, row.Quantity + 1); } else { row = Instantiate(_rowPrefab, _rowContainer); row.OnAddClicked += AddCheckoutProduction; row.OnRemoveClicked += RemoveCheckoutProduction; row.Bind(itemData, 1); _rowByItemId[itemData.ItemId] = row; } CheckoutSum += itemData.FinalPrice; } public void RemoveCheckoutProduction(ItemData itemData) { Debug.Log("감소버튼 누름"); if (itemData == null) return; if (!_rowByItemId.TryGetValue(itemData.ItemId, out CheckoutProductionRow row)) return; CheckoutSum -= itemData.FinalPrice; if (row.Quantity <= 1) { _rowByItemId.Remove(itemData.ItemId); Destroy(row.gameObject); } else { row.Bind(itemData, row.Quantity - 1); } } } }