using System; using System.Collections.Generic; using System.Linq; using Excel2Json; using Fort23.Core; using Fort23.UTool; using GameLogic.Bag; using log4net.Util; using UnityEngine; using Transform = UnityEngine.Transform; namespace Fort23.Mono { [UIBinding(prefab = "SelectElixirPanel")] public partial class SelectElixirPanel : UIPanel { List elixirItems = new List(); private ElixirItemWidget elixirItemWidget; Action callback; private Transform weidgetFater; BreakthroughItemWidget breakthrough; private void Init() { } protected override void AddEvent() { } protected override void DelEvent() { } public override void AddButtonEvent() { Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); }); Btn_Affirm.onClick.AddListener(() => { // if (elixirItemWidget == null) // return; if (elixirItemWidget != null) { if (!PlayerManager.Instance.BagController.IsEnough(elixirItemWidget._itemConfig.ID, 1)) { TipMessagePanel.OpenTipMessagePanel("道具不足!"); return; } } callback?.Invoke(elixirItemWidget); EventManager.Instance.Dispatch(CustomEventType.RefenceBreakthrough, null); UIManager.Instance.HideUIUIPanel(this); }); Btn_Cancel.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); }); } public async void CustomInit(BreakthroughItemWidget breakthroughItemWidget, Action callback) { this.callback = callback; breakthrough = breakthroughItemWidget; Text_FailDesc.text = $"-{0}%"; Text_SucceedDesc.text = $"+{0}%"; weidgetFater = breakthroughItemWidget.transform.parent; breakthroughItemWidget.transform.SetParent(this.transform); List itemConfigs = ConfigComponent.Instance.GetAll().ToList(); var showItemConfigs = itemConfigs.Where(i => i.itemTag == 3 && PlayerManager.Instance.myHero.heroData.heroPowerId >= i.associateVlaue[0] && PlayerManager.Instance.myHero.heroData.heroPowerId <= i.associateVlaue[1]).ToList(); foreach (var showItemConfig in showItemConfigs) { ElixirItemWidget elixirItemWidget = await UIManager.Instance.CreateGComponent(null, Content); elixirItemWidget.CustomInit(showItemConfig.ID); if (breakthroughItemWidget.itemInfo != null) { if (breakthroughItemWidget.itemInfo.config.ID == showItemConfig.ID) { this.elixirItemWidget = elixirItemWidget; } } elixirItemWidget.onClick = OnClick; elixirItems.Add(elixirItemWidget); } SelectWidget(elixirItemWidget); RefenceBl(); } private void OnClick(ItemWidgetBasic obj) { ElixirItemWidget elixirItemWidget = obj as ElixirItemWidget; if (elixirItemWidget == this.elixirItemWidget) { this.elixirItemWidget = null; SelectWidget(null); } else { this.elixirItemWidget = elixirItemWidget; SelectWidget(elixirItemWidget); } RefenceBl(); } private void SelectWidget(ElixirItemWidget elixirItemWidget) { if (elixirItemWidget == null) { Icon_Select.transform.SetParent(transform); Icon_Select.SetActive(false); } else { Icon_Select.transform.SetParent(elixirItemWidget.transform); Icon_Select.GetComponent().anchoredPosition = new Vector2(-0.48f,6.1f); Icon_Select.SetActive(true); } } private void RefenceBl() { if (elixirItemWidget == null) { Text_SucceedDesc.text = $"+{0}%"; Text_FailDesc.text = $"-{0}%"; } else { Text_SucceedDesc.text = $"+{elixirItemWidget._itemConfig.associateVlaue[2]}%"; Text_FailDesc.text = $"-{elixirItemWidget._itemConfig.associateVlaue[3]}%"; } } public override void Close() { elixirItems.ForEach(e => UIManager.Instance.DormancyGComponent(e)); elixirItems.Clear(); elixirItemWidget = null; breakthrough.transform.SetParent(weidgetFater); breakthrough = null; weidgetFater = null; SelectWidget(null); base.Close(); } public async static CTask OpenPanel(BreakthroughItemWidget itemInfo, Action callback = null) { SelectElixirPanel selectElixirPanel = await UIManager.Instance.LoadAndOpenPanel(null); selectElixirPanel.CustomInit(itemInfo, callback); return selectElixirPanel; } } }