Files
Shopping_UnityVR/Assets/02_Scripts/UI/ShoppingOrderView.cs
2026-05-11 13:12:48 +09:00

69 lines
2.0 KiB
C#

using UnityEngine;
using VRShopping.Shopping;
namespace VRShopping.UI
{
public class ShoppingOrderView : MonoBehaviour
{
[SerializeField] private ShoppingOrderList _orderList;
[SerializeField] private ShoppingOrderRow _rowPrefab;
[SerializeField] private Transform _rowContainer;
[SerializeField] private Animator _anim;
[SerializeField] private GameObject _paper;
public ShoppingOrderList OrderList => _orderList;
private bool _visibleShoppingOrderList = false;
private void Start()
{
Rebuild();
}
// 런타임에 미션 목록 교체 (MissionGenerator에서 호출)
public void SetOrderList(ShoppingOrderList orderList)
{
_orderList = orderList;
Rebuild();
}
public void Rebuild()
{
if (_orderList == null || _rowPrefab == null || _rowContainer == null) return;
for (int i = _rowContainer.childCount - 1; i >= 0; i--)
{
Destroy(_rowContainer.GetChild(i).gameObject);
}
foreach (var entry in _orderList.Entries)
{
var row = Instantiate(_rowPrefab, _rowContainer);
row.Bind(entry);
}
}
public async Awaitable ToggleShoppingOrderList()
{
_visibleShoppingOrderList = !_visibleShoppingOrderList;
await OnOffShoppingOrderList(_visibleShoppingOrderList);
}
private async Awaitable OnOffShoppingOrderList(bool isOn)
{
if(isOn)
{
_paper.SetActive(true);
_anim.SetTrigger("OnVisibleShoppingOrderListTrigger");
}
else
{
_anim.SetTrigger("OffVisibleShoppingOrderListTrigger");
await Util.RunDelayed(1f,()=>{
_paper.SetActive(false);
});
}
}
}
}