| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | using System;using Fort23.Core;using Fort23.Mono;using Fort23.UTool;using GameLogic.Combat.CombatTool;using GameLogic.Combat.CombatType;using GameLogic.CombatScenesTool;using GameUI.Combat;using UnityEngine;using Utility;namespace GameLogic.Combat{    public class CombatDrive : Singleton<CombatDrive>    {        public CombatController CombatController;        private CombatMonoBaisc combatMonoBaisc;        private System.Action<bool> caombatFinish;        public async CTask Init()        {            string name = "CombatRoot.prefab";            AssetHandle assetHandle = await AssetBundleLoadManager.Instance.LoadAssetAsyncTask<GameObject>(name);            assetHandle.AssetObject<GameObject>().SetActive(true);            //         }        public void AddCombatController(CombatController combatController)        {            this.CombatController = combatController;        }        public async CTask StartCombat(StartCombatInfo startCombatInfo)        {            combatMonoBaisc = new CombatMonoBaisc();            CombatEquipFallManager.Instance.Dispose();            CombatEquipFallManager.Instance.Init();            CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();            // CombatPanel.OpenCombatPanel(cTaskAwaitBuffer);            CombatShowTextPanel.OpenCombatShowTextPanel(cTaskAwaitBuffer);            cTaskAwaitBuffer.AddTask(combatMonoBaisc.Init(CombatController));            await cTaskAwaitBuffer.WaitAll();            await CombatHPPanel.OpenCombatHPPanel();            LogTool.Log("战斗逻辑自己写");            await CombatController.InitCombat(startCombatInfo);            StaticUpdater.Instance.AddRenderUpdateCallBack(Update);        }        public async CTask LoadLevelBattleCombat(int levelBattleId, System.Action<bool> caombatFinish)        {            levelBattleId = 100004;            LevelBattleCombatType levelBattleCombatType = CombatController.CombatTypeBasic as LevelBattleCombatType;            if (levelBattleCombatType != null)            {                this.caombatFinish = caombatFinish;                CombatController.ChangeState(CombatController.idle);                CombatController.combatFinish = CombatFinish;                await levelBattleCombatType.LoadCombat(levelBattleId, caombatFinish);            }            else            {                return;            }            await CombatPanel.OpenCombatPanel();            ///播放动画            MainPanel mainPanel = UIManager.Instance.GetComponent<MainPanel>();            mainPanel.transform.gameObject.SetActive(false);            CombatController.ChangeState(CombatController.update);        }        protected void CombatFinish(bool isWin)        {            caombatFinish?.Invoke(isWin);            ///播放动画            MainPanel mainPanel = UIManager.Instance.GetComponent<MainPanel>();            mainPanel.transform.gameObject.SetActive(true);            UIManager.Instance.HideUIUIPanel<CombatPanel>();        }        public void Update()        {            float t = Time.deltaTime;            CombatController.Update(t);            combatMonoBaisc.Update(t);        }        public void Dispose()        {            StaticUpdater.Instance.RemoveRenderUpdateCallBack(Update);        }    }}
 |