FM/Assets/Scripts/Runtime/UI/Logic/ShoppingCartUI.cs

150 lines
4.6 KiB
C#
Raw Normal View History

2025-07-10 23:16:27 +08:00
using System.Collections.Generic;
using Runtime;
2025-06-17 09:31:12 +08:00
using UnityEngine.UI;
using TMPro;
using UnityEngine;
2025-07-10 23:16:27 +08:00
using ZGame;
2025-06-17 09:31:12 +08:00
namespace HK
{
public class ShoppingCartUI : UIBase
{
[SerializeField] private UpMenuItem goUpMenu;
[SerializeField] private TMP_Text txtQuantity;
[SerializeField] private TMP_Text txtSubtotal;
[SerializeField] private TMP_Text txtDiscount;
[SerializeField] private TMP_Text txtAmount;
[SerializeField] private Button btnConfirm;
2025-07-10 23:16:27 +08:00
[SerializeField] ScrollRect scrollRect;
[SerializeField] GameObject commodityItem;
List<CommodityItem> items = new List<CommodityItem>();
2025-06-17 09:31:12 +08:00
public override void OnInit()
{
base.OnInit();
#region AutoGen_Init
goUpMenu = GetValue<UpMenuItem>("goUpMenu");
txtQuantity = GetValue<TMP_Text>("txtQuantity");
txtSubtotal = GetValue<TMP_Text>("txtSubtotal");
txtDiscount = GetValue<TMP_Text>("txtDiscount");
txtAmount = GetValue<TMP_Text>("txtAmount");
btnConfirm = GetValue<Button>("btnConfirm");
2025-07-10 23:16:27 +08:00
scrollRect = GetValue<ScrollRect>("scrollRect");
2025-06-17 09:31:12 +08:00
btnConfirm.onClick.AddListener(OnClickbtnConfirm);
#endregion
2025-07-02 10:24:01 +08:00
goUpMenu.OnClickReturn += ClickReturn;
2025-07-10 23:16:27 +08:00
EventManager.Instance.Subscribe(AddCommodityToShoppingCartEventArgs.EventId,
AddCommodityToShoppingCartEvent);
EventManager.Instance.Subscribe(ClearShoppingCartEventArgs.EventId, ClearShoppingCartEvent);
commodityItem = ResourcesManager.Instance.Load<GameObject>(AssetConst
.Assets_Res_Prefab_UI_Item_CommodityItem_prefab);
}
private void ClearShoppingCartEvent(object sender, GameEventArgs e)
{
foreach (var item in items)
{
GameObject.Destroy(item.gameObject);
}
items.Clear();
}
private void AddCommodityToShoppingCartEvent(object sender, GameEventArgs e)
{
var args = e as AddCommodityToShoppingCartEventArgs;
2025-07-02 10:24:01 +08:00
}
private void ClickReturn()
{
UIManager.Instance.BackLast();
}
public override void OnOpen()
{
base.OnOpen();
goUpMenu.OnShow();
2025-07-10 23:16:27 +08:00
UpdateShoppingCart();
}
void UpdateShoppingCart()
{
foreach (var item in items)
{
GameObject.Destroy(item.gameObject);
}
items.Clear();
2025-07-10 23:16:27 +08:00
var shoppingCart = ShoppingCartManager.Instance.ShoppingCart;
foreach (var cartData in shoppingCart.datas)
{
Gen(cartData);
}
txtQuantity.text = $"{shoppingCart.totalQuantity}";
txtSubtotal.text = $"{shoppingCart.itemsSubTotal}";
txtDiscount.text = $"{shoppingCart.discount}";
txtAmount.text = $"{shoppingCart.totalAmount}";
}
void OnlyUpdateMsg()
{
var shoppingCart = ShoppingCartManager.Instance.ShoppingCart;
txtQuantity.text = $"{shoppingCart.totalQuantity}";
txtSubtotal.text = $"{shoppingCart.itemsSubTotal}";
txtDiscount.text = $"{shoppingCart.discount}";
txtAmount.text = $"{shoppingCart.totalAmount}";
2025-07-10 23:16:27 +08:00
}
void Gen(ShoppingCartData shoppingCartData)
{
var go = GameObject.Instantiate(commodityItem, scrollRect.content);
var item = go.GetComponent<CommodityItem>();
item.SetData(shoppingCartData);
item.OnUpdateCallback += OnlyUpdateMsg;
2025-07-10 23:16:27 +08:00
go.SetActive(true);
items.Add(item);
2025-06-17 09:31:12 +08:00
}
#region AutoGen_Method
private void OnClickbtnConfirm()
{
UIManager.Instance.ShowUIOnly(nameof(SubmitMessageUI));
2025-06-17 09:31:12 +08:00
}
#endregion
public override void OnDispose()
{
base.OnDispose();
2025-07-02 10:24:01 +08:00
goUpMenu.OnClickReturn -= ClickReturn;
2025-06-17 09:31:12 +08:00
EventManager.Instance.Unsubscribe(AddCommodityToShoppingCartEventArgs.EventId,
AddCommodityToShoppingCartEvent);
EventManager.Instance.Unsubscribe(ClearShoppingCartEventArgs.EventId, ClearShoppingCartEvent);
2025-06-17 09:31:12 +08:00
#region AutoGen_Dispose
btnConfirm.onClick.RemoveListener(OnClickbtnConfirm);
goUpMenu = null;
txtQuantity = null;
txtSubtotal = null;
txtDiscount = null;
txtAmount = null;
btnConfirm = null;
#endregion
}
}
}