Files
Shopping_UnityVR/Assets/02_Scripts/Shopping/CheckoutMachine.cs

64 lines
1.8 KiB
C#

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<string, CheckoutProductionRow> _rowByItemId = new();
[SerializeField] private TMP_Text _checkoutSumField;
public void UpdateSumUI()
{
_checkoutSumField.text = CheckoutSum.ToString("N0");
}
public void AddCheckoutProduction(ItemData itemData)
{
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)
{
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);
}
}
}
}