using System; using Core.Language; using Excel2Json; using Fort23.Core; using Fort23.UTool; using GameLogic.Bag; using UnityEngine; namespace Fort23.Mono { [UIBinding(prefab = "SelectBreakthroughItemPanel")] public partial class SelectBreakthroughItemPanel : UIPanel { ItemConfig itemConfig; private Action callBack; private Transform weidgetFater; BreakthroughItemWidget breakthrough; private void Init() { IsShowAppBar = false; isAddStack = true; } protected override void AddEvent() { EventManager.Instance.AddEventListener(CustomEventType.ItemUpdate, ItemUpdateEvent); } private void ItemUpdateEvent(IEventData e) { CustomInit(); } protected override void DelEvent() { EventManager.Instance.RemoveEventListener(CustomEventType.ItemUpdate, ItemUpdateEvent); } public override void AddButtonEvent() { Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); }); Btn_Affirm.onClick.AddListener(() => { this.callBack?.Invoke(); EventManager.Instance.Dispatch(CustomEventType.RefenceBreakthrough, null); UIManager.Instance.HideUIUIPanel(this); }); Btn_Cancel.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); }); Btn_Source.onClick.AddListener(() => { ItemSourcePanel.OpenPanel(itemConfig.ID); }); } public override CTask AsyncInit(object[] uiData) { breakthrough = uiData[0] as BreakthroughItemWidget; this.callBack = uiData[1] as Action; weidgetFater = breakthrough.transform.parent; breakthrough.transform.SetParent(this.transform); breakthrough.Icon_Select.gameObject.SetActive(true); CustomInit(); return base.AsyncInit(uiData); } public void CustomInit() { itemConfig = ConfigComponent.Instance.Get(breakthrough.itemId); Text_ItemName.text = LanguageManager.Instance.Text(itemConfig.itemName); Text_ItemDesc.text = LanguageManager.Instance.Text(itemConfig.itemDesc); Icon_ItemIcon.icon_name = itemConfig.icon; if (itemConfig.itemTag == 3) { Text_SucceedDesc.text = $"+{itemConfig.associateVlaue[2]}%"; } else { Text_SucceedDesc.text = $"+{itemConfig.associateVlaue[2]}%"; } if (breakthrough.itemInfo == null) { if (PlayerManager.Instance.BagController.IsEnough(breakthrough.itemId, 1)) { Text_Affirm.text = "使用"; Btn_Affirm.gameObject.SetActive(true); Btn_Cancel.gameObject.SetActive(true); Text_NoEnough.gameObject.SetActive(false); } else { Btn_Affirm.gameObject.SetActive(false); Btn_Cancel.gameObject.SetActive(true); Text_NoEnough.gameObject.SetActive(true); } } else { Text_Affirm.text = "取消"; Btn_Affirm.gameObject.SetActive(true); Btn_Cancel.gameObject.SetActive(true); Text_NoEnough.gameObject.SetActive(false); } } public async override CTask Close() { breakthrough.Icon_Select.gameObject.SetActive(false); breakthrough.transform.SetParent(weidgetFater); weidgetFater = null; breakthrough = null; callBack = null; await base.Close(); } public async static CTask OpenPanel(BreakthroughItemWidget breakthroughItemWidget, Action callBack) { SelectBreakthroughItemPanel selectBreakthroughItemPanel = await UIManager.Instance.LoadAndOpenPanel(null, UILayer.Middle, uiData: new object[] { breakthroughItemWidget, callBack }, isFocus: false); return selectBreakthroughItemPanel; } } }