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);
- }
- }
- }
|