| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 | using System;using System.Collections.Generic;using System.Linq;using Excel2Json;using Fort23.Core;using Fort23.UTool;using UnityEngine;using Transform = UnityEngine.Transform;namespace Fort23.Mono{    [UIBinding(prefab = "SelectElixirPanel")]    public partial class SelectElixirPanel : UIPanel    {        List<ElixirItemWidget> elixirItems = new List<ElixirItemWidget>();        private ElixirItemWidget elixirItemWidget;        Action<ElixirItemWidget> callback;        private Transform weidgetFater;        BreakthroughItemWidget breakthrough;        private void Init()        {            IsShowAppBar = false;            isAddStack = true;        }        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<ElixirItemWidget> callback)        {            this.callback = callback;            breakthrough = breakthroughItemWidget;            Text_FailDesc.text = $"-{0}%";            Text_SucceedDesc.text = $"+{0}%";            weidgetFater = breakthroughItemWidget.transform.parent;            breakthroughItemWidget.transform.SetParent(this.transform);            breakthroughItemWidget.Icon_Select.gameObject.SetActive(true);            List<ItemConfig> itemConfigs = ConfigComponent.Instance.GetAll<ItemConfig>().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<ElixirItemWidget>(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 (!PlayerManager.Instance.BagController.IsEnough(elixirItemWidget._itemConfig.ID, 1))            {                ItemSourcePanel.OpenPanel(elixirItemWidget._itemConfig.ID);                return;            }            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.SelectRoot);                Icon_Select.GetComponent<RectTransform>().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 async override CTask Close()        {            elixirItems.ForEach(e => UIManager.Instance.DormancyGComponent(e));            elixirItems.Clear();            elixirItemWidget = null;            breakthrough.transform.SetParent(weidgetFater);            breakthrough.Icon_Select.gameObject.SetActive(false);            breakthrough = null;            weidgetFater = null;            SelectWidget(null);            await base.Close();        }        public async static CTask<SelectElixirPanel> OpenPanel(BreakthroughItemWidget itemInfo, Action<ElixirItemWidget> callback = null)        {            SelectElixirPanel selectElixirPanel = await UIManager.Instance.LoadAndOpenPanel<SelectElixirPanel>(null, UILayer.Middle, isFocus: false);            selectElixirPanel.CustomInit(itemInfo, callback);            return selectElixirPanel;        }    }}
 |