ProjectDDD/Assets/_DDD/_Scripts/Restaurant/Ui/Hud/BillHud.cs
2025-09-01 17:55:26 +09:00

43 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace DDD.Restaurant
{
public class BillHud : MonoBehaviour, IEventHandler<RestaurantOrderEvent>
{
[SerializeField] private RectTransform _billItemsLayoutTransform;
[SerializeField] private GameObject _billItemPrefab;
private readonly Dictionary<GameObject, GameObject> _billItemMap = new();
private void Start()
{
EventBus.Register(this);
Utils.DestroyAllChildren(_billItemsLayoutTransform);
}
public void HandleEvent(RestaurantOrderEvent evt)
{
if (evt.OrderPhase == RestaurantOrderType.Order)
{
var orderState = evt.OrderObjectState;
if (orderState == null) return;
var billItem = Instantiate(_billItemPrefab, _billItemsLayoutTransform);
var sprite = DataManager.Instance.GetSprite(orderState.FoodId);
billItem.GetComponent<Image>().sprite = sprite;
_billItemMap[orderState.Customer] = billItem;
}
else if (evt.OrderPhase == RestaurantOrderType.Serve)
{
// Find bill item by customer from _billItemMap, then destroy it.
if (_billItemMap.TryGetValue(evt.OrderObjectState.Customer, out var billItem))
{
Destroy(billItem);
_billItemMap.Remove(evt.OrderObjectState.Customer);
}
}
}
}
}