| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 | using System.Collections.Generic;using Animancer;using Animancer.TransitionLibraries;using Core.Language;using Excel2Json;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, 167.575f, 0.118f);            modelObj.own.transform.localPosition = new Vector3(-4, -211, 1482);            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.ToString()));            HeroAttributeWidgets.Add(heroAttributeWidget);            heroAttributeWidget =                await UIManager.Instance.CreateGComponentForObject<HeroAttributeWidget>(HeroAttributeWidgetGam, null,                    Content, isInstance: true);            heroAttributeWidget.CustomInit(new HeroAttributeData("木灵根", "",                PlayerManager.Instance.myHero.Wood.ToString()));            HeroAttributeWidgets.Add(heroAttributeWidget);            heroAttributeWidget =                await UIManager.Instance.CreateGComponentForObject<HeroAttributeWidget>(HeroAttributeWidgetGam, null,                    Content, isInstance: true);            heroAttributeWidget.CustomInit(new HeroAttributeData("水灵根", "",                PlayerManager.Instance.myHero.Water.ToString()));            HeroAttributeWidgets.Add(heroAttributeWidget);            heroAttributeWidget =                await UIManager.Instance.CreateGComponentForObject<HeroAttributeWidget>(HeroAttributeWidgetGam, null,                    Content, isInstance: true);            heroAttributeWidget.CustomInit(new HeroAttributeData("火灵根", "",                PlayerManager.Instance.myHero.Fire.ToString()));            HeroAttributeWidgets.Add(heroAttributeWidget);            heroAttributeWidget =                await UIManager.Instance.CreateGComponentForObject<HeroAttributeWidget>(HeroAttributeWidgetGam, null,                    Content, isInstance: true);            heroAttributeWidget.CustomInit(new HeroAttributeData("土灵根", "",                PlayerManager.Instance.myHero.Earth.ToString()));            HeroAttributeWidgets.Add(heroAttributeWidget);        }        private async void OnClick(ItemWidgetBasic obj)        {            BtnFaBaoWidget btnFaBaoWidget = obj as BtnFaBaoWidget;            if (btnFaBaoWidget.index > PlayerManager.Instance.myHero.powerUpConfig.MaxFabaoNum - 1)            {                HeroPowerUpConfig[] heroPowerUpConfigs = ConfigComponent.Instance.GetAll<HeroPowerUpConfig>();                foreach (var heroPowerUpConfig in heroPowerUpConfigs)                {                    if (heroPowerUpConfig.MaxFabaoNum > PlayerManager.Instance.myHero.powerUpConfig.MaxFabaoNum)                    {                        TipMessagePanel.OpenTipMessagePanel(LanguageManager.Instance.Text(10331,                            LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[0]) +                            LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[1]) +                            LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[2])));                        return;                    }                }                TipMessagePanel.OpenTipMessagePanel("当前位置未解锁");                return;            }            int redDotID = 9;            AccountFileInfo.RedDot redDot = RedDotManager.Instance.GetRedDot(redDotID);            if (redDot == null)            {                redDot = new AccountFileInfo.RedDot();                redDot.id = redDotID;            }            if (!redDot.Params.Contains(btnFaBaoWidget.index.ToString()))            {                redDot.Params.Add(btnFaBaoWidget.index.ToString());                RedDotManager.Instance.AddRedDot(redDot);                RedDotManager.Instance.ChangeStateRedDot(redDotID, 0);            }            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, isFullUI: true);            mainHeroPanel.CustomInit();            return mainHeroPanel;        }        public async override CTask 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();            await base.Close();        }    }}
 |