2026-04-22 계산대 프로토 타입
This commit is contained in:
@@ -1,16 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace VRShopping.Interact
|
||||
{
|
||||
public class CheckoutMachine : MonoBehaviour
|
||||
{
|
||||
private int _checkoutSum;
|
||||
|
||||
public int CheckoutSum => _checkoutSum;
|
||||
|
||||
public void AddCheckoutSum(int price)
|
||||
{
|
||||
_checkoutSum += price;
|
||||
}
|
||||
}
|
||||
}
|
||||
8
Assets/02_Scripts/Shopping.meta
Normal file
8
Assets/02_Scripts/Shopping.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 41cd13da1f2c3254ba295b12e84e5f4b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -39,8 +39,7 @@ public void ScanArea()
|
||||
//ItemInstance의 상품 정보를 스캔
|
||||
public void ScanProduction(ItemInstance itemIns)
|
||||
{
|
||||
//AddCheckoutSum으로 총 계산금액에 더함
|
||||
_checkoutMachine.AddCheckoutSum(itemIns.ItemDataInfo.FinalPrice);
|
||||
_checkoutMachine.AddCheckoutProduction(itemIns.ItemDataInfo);
|
||||
|
||||
if (_scanVisualEffect != null) _scanVisualEffect.Play();
|
||||
if (_scanSoundEffect != null) _scanSoundEffect.Play();
|
||||
35
Assets/02_Scripts/Shopping/CheckoutMachine.cs
Normal file
35
Assets/02_Scripts/Shopping/CheckoutMachine.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using System.Collections.Generic;
|
||||
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<ItemData, CheckoutProductionRow> _rowByItem = new();
|
||||
|
||||
public void AddCheckoutProduction(ItemData itemData)
|
||||
{
|
||||
if (itemData == null) return;
|
||||
|
||||
if (_rowByItem.TryGetValue(itemData, out CheckoutProductionRow row))
|
||||
{
|
||||
row.Bind(itemData, row.Quantity + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
row = Instantiate(_rowPrefab, _rowContainer);
|
||||
row.Bind(itemData, 1);
|
||||
_rowByItem[itemData] = row;
|
||||
}
|
||||
|
||||
CheckoutSum += itemData.FinalPrice;
|
||||
}
|
||||
}
|
||||
}
|
||||
30
Assets/02_Scripts/UI/CheckoutProductionRow.cs
Normal file
30
Assets/02_Scripts/UI/CheckoutProductionRow.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using VRShopping.Items;
|
||||
|
||||
namespace VRShopping.UI
|
||||
{
|
||||
public class CheckoutProductionRow : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private TMP_Text _nameText;
|
||||
[SerializeField] private TMP_Text _quantityText;
|
||||
[SerializeField] private TMP_Text _priceText;
|
||||
|
||||
public int Quantity { get; private set; }
|
||||
|
||||
public void Bind(ItemData item, int quantity)
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
return;
|
||||
}
|
||||
|
||||
Quantity = quantity;
|
||||
|
||||
if (_nameText != null) _nameText.text = item.DisplayName;
|
||||
if (_quantityText != null) _quantityText.text = $"x{quantity}";
|
||||
if (_priceText != null) _priceText.text = (item.FinalPrice * quantity).ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/02_Scripts/UI/CheckoutProductionRow.cs.meta
Normal file
2
Assets/02_Scripts/UI/CheckoutProductionRow.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 92bbb02bca8248745bf81725ed4e0423
|
||||
Reference in New Issue
Block a user