계산대 로직 중간저장
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user