12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- 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)
- {
- this.caombatFinish = caombatFinish;
- CombatController.ChangeState(CombatController.idle);
- LevelBattleCombatType levelBattleCombatType = CombatController.CombatTypeBasic as LevelBattleCombatType;
- if (levelBattleCombatType != null)
- {
- CombatController.combatFinish = CombatFinish;
- await levelBattleCombatType.LoadCombat(levelBattleId, caombatFinish);
- }
- 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);
- }
- }
- }
|