64 lines
1.8 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|