| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 | using System.Collections.Generic;using Animancer;using Animancer.TransitionLibraries;using Fort23.Core;using Fort23.UTool;using GameLogic.Hero;using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;using UnityEngine;namespace Fort23.Mono{    [UIBinding(prefab = "MainHeroPanel")]    public partial class MainHeroPanel : UIPanel    {        List<BtnFaBaoWidget> btnFaBaoWidgets = new List<BtnFaBaoWidget>();        private GameObjectPool modelObj;        private void Init()        {            isAddStack = true;            IsShowAppBar = true;        }        protected override void AddEvent()        {        }        protected override void DelEvent()        {        }        public override CTask GetFocus()        {            TitlePanel.OpenPanel(new List<int>() { 1001, 1002 });            AppBarPanel.OpenPanel(this);            return base.GetFocus();        }        public override CTask LoseFocus()        {            TitlePanel.ClosePanel();            // AppBarPanel.ClosePanel();            return base.LoseFocus();        }        private HeroInfo heroInfo;        private List<HeroAttributeWidget> HeroAttributeWidgets = new List<HeroAttributeWidget>();        public override void AddButtonEvent()        {            Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });            Btn_Sentiment.onClick.AddListener(() => { SentimentPanel.OpenPanel(); });        }        private async CTask CreatHero()        {            modelObj = await GObjectPool.Instance.FetchAsync<GameObjectPool>(PlayerManager.Instance.myHero.modelConfig.model + ".prefab", null);            modelObj.own.transform.parent = CameraRoot;            modelObj.own.transform.localEulerAngles = new Vector3(0, 162, 0);            modelObj.own.transform.localPosition = new Vector3(0, -132, 854);            modelObj.own.transform.localScale = Vector3.one * 330;            ChangeLayerRecursively(modelObj.own, LayerMask.NameToLayer("UiModle"));            var modelAnimComponent = modelObj.own.GetComponent<AnimancerComponent>();            int max = modelAnimComponent.Transitions.Library.Count;            for (int i = 0; i < max; i++)            {                if (modelAnimComponent.Transitions.Library.TryGetTransition(i,                        out TransitionModifierGroup transition))                {                    var modelIdleClip = transition.Transition as TransitionAsset;                    if (modelIdleClip != null && modelIdleClip.name == "idle")                    {                        modelAnimComponent.Play(modelIdleClip);                        break;                    }                }            }        }        public void ChangeLayerRecursively(GameObject obj, int newLayer)        {            if (obj == null || obj.layer == newLayer) return;            // 修改当前对象的 Layer            obj.layer = newLayer;            // 遍历所有子对象,递归修改            foreach (Transform child in obj.transform)            {                ChangeLayerRecursively(child.gameObject, newLayer);            }        }        public override CTask<bool> AsyncInit(object[] uiData)        {            CreatHero();            return base.AsyncInit(uiData);        }        public async void CustomInit()        {            for (int i = 0; i < 4; i++)            {                BtnFaBaoWidget btnFaBaoWidget =                    await UIManager.Instance.CreateGComponent<BtnFaBaoWidget>(null, FaBaoRoot);                btnFaBaoWidget.CustomInit(i);                btnFaBaoWidget.OnClick = OnClick;                btnFaBaoWidgets.Add(btnFaBaoWidget);            }            heroInfo = PlayerManager.Instance.myHero;            HeroAttributeWidget heroAttributeWidget = await UIManager.Instance.CreateGComponentForObject<HeroAttributeWidget>(HeroAttributeWidgetGam, null, Content, isInstance: true);            heroAttributeWidget.CustomInit(new HeroAttributeData("生命", "", PlayerManager.Instance.myHero.hp.Value.ToString()));            HeroAttributeWidgets.Add(heroAttributeWidget);            heroAttributeWidget = await UIManager.Instance.CreateGComponentForObject<HeroAttributeWidget>(HeroAttributeWidgetGam, null, Content, isInstance: true);            heroAttributeWidget.CustomInit(new HeroAttributeData("攻击", "", PlayerManager.Instance.myHero.attack.Value.ToString()));            HeroAttributeWidgets.Add(heroAttributeWidget);            heroAttributeWidget = await UIManager.Instance.CreateGComponentForObject<HeroAttributeWidget>(HeroAttributeWidgetGam, null, Content, isInstance: true);            heroAttributeWidget.CustomInit(new HeroAttributeData("防御", "", PlayerManager.Instance.myHero.defense.Value.ToString()));            HeroAttributeWidgets.Add(heroAttributeWidget);            heroAttributeWidget = await UIManager.Instance.CreateGComponentForObject<HeroAttributeWidget>(HeroAttributeWidgetGam, null, Content, isInstance: true);            heroAttributeWidget.CustomInit(new HeroAttributeData("攻击速度", "", PlayerManager.Instance.myHero.attSpeed.Value.ToString()));            HeroAttributeWidgets.Add(heroAttributeWidget);            heroAttributeWidget = await UIManager.Instance.CreateGComponentForObject<HeroAttributeWidget>(HeroAttributeWidgetGam, null, Content, isInstance: true);            heroAttributeWidget.CustomInit(new HeroAttributeData("金灵根", "", PlayerManager.Instance.myHero.Metal_Injury.ToString()));            HeroAttributeWidgets.Add(heroAttributeWidget);            heroAttributeWidget = await UIManager.Instance.CreateGComponentForObject<HeroAttributeWidget>(HeroAttributeWidgetGam, null, Content, isInstance: true);            heroAttributeWidget.CustomInit(new HeroAttributeData("木灵根", "", PlayerManager.Instance.myHero.Wood_Injury.ToString()));            HeroAttributeWidgets.Add(heroAttributeWidget);            heroAttributeWidget = await UIManager.Instance.CreateGComponentForObject<HeroAttributeWidget>(HeroAttributeWidgetGam, null, Content, isInstance: true);            heroAttributeWidget.CustomInit(new HeroAttributeData("水灵根", "", PlayerManager.Instance.myHero.Water_Injury.ToString()));            HeroAttributeWidgets.Add(heroAttributeWidget);            heroAttributeWidget = await UIManager.Instance.CreateGComponentForObject<HeroAttributeWidget>(HeroAttributeWidgetGam, null, Content, isInstance: true);            heroAttributeWidget.CustomInit(new HeroAttributeData("火灵根", "", PlayerManager.Instance.myHero.Fire_Injury.ToString()));            HeroAttributeWidgets.Add(heroAttributeWidget);            heroAttributeWidget = await UIManager.Instance.CreateGComponentForObject<HeroAttributeWidget>(HeroAttributeWidgetGam, null, Content, isInstance: true);            heroAttributeWidget.CustomInit(new HeroAttributeData("土灵根", "", PlayerManager.Instance.myHero.Earth_Injury.ToString()));            HeroAttributeWidgets.Add(heroAttributeWidget);        }        private async void OnClick(ItemWidgetBasic obj)        {            BtnFaBaoWidget btnFaBaoWidget = obj as BtnFaBaoWidget;            if (btnFaBaoWidget.index > PlayerManager.Instance.myHero.powerUpConfig.MaxFabaoNum - 1)            {                TipMessagePanel.OpenTipMessagePanel("当前位置未解锁");                return;            }            SelectFaBaoPanel selectFaBaoPanel = await SelectFaBaoPanel.OpenPanel(btnFaBaoWidget.index);            await selectFaBaoPanel.UIClosed();            foreach (var b in btnFaBaoWidgets)            {                b.CustomInit(b.index);            }        }        public async static CTask<MainHeroPanel> OpenPanel()        {            MainHeroPanel mainHeroPanel = await UIManager.Instance.LoadAndOpenPanel<MainHeroPanel>(null);            mainHeroPanel.CustomInit();            return mainHeroPanel;        }        public override void Close()        {            UIManager.Instance.DormancyGComponent(modelObj);            modelObj = null;            foreach (var btnFaBaoWidget in btnFaBaoWidgets)            {                UIManager.Instance.DormancyGComponent(btnFaBaoWidget);            }            btnFaBaoWidgets.Clear();            foreach (var heroAttributeWidget in HeroAttributeWidgets)            {                UIManager.Instance.DormancyGComponent(heroAttributeWidget);            }            HeroAttributeWidgets.Clear();            base.Close();        }    }}
 |