CombatDrive.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System;
  2. using Fort23.Core;
  3. using Fort23.Mono;
  4. using GameLogic.Combat.CombatTool;
  5. using GameLogic.Combat.CombatType;
  6. using GameLogic.CombatScenesTool;
  7. using UnityEngine;
  8. using Utility;
  9. namespace GameLogic.Combat
  10. {
  11. public class CombatDrive : Singleton<CombatDrive>
  12. {
  13. public CombatController CombatController;
  14. public async CTask Init()
  15. {
  16. string name = "CombatRoot.prefab";
  17. AssetHandle assetHandle = await AssetBundleLoadManager.Instance.LoadAssetAsyncTask<GameObject>(name);
  18. assetHandle.AssetObject<GameObject>().SetActive(true);
  19. }
  20. public void AddCombatController(CombatController combatController)
  21. {
  22. this.CombatController = combatController;
  23. }
  24. public async CTask StartCombat(StartCombatInfo startCombatInfo)
  25. {
  26. CombatEquipFallManager.Instance.Dispose();
  27. CombatEquipFallManager.Instance.Init();
  28. CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();
  29. cTaskAwaitBuffer.AddTask(CombatHPPanel.OpenCombatHPPanel());
  30. cTaskAwaitBuffer.AddTask(ShowTextPanel.OpenShowTextPanel());
  31. CombatShowTextPanel.OpenCombatShowTextPanel(cTaskAwaitBuffer);
  32. cTaskAwaitBuffer.AddTask(ShowItemMoveToTargetPanel.OpenShowItemMoveToTargetPanel());
  33. await cTaskAwaitBuffer.WaitAll();
  34. await CombatController.InitCombat(startCombatInfo);
  35. StaticUpdater.Instance.AddRenderUpdateCallBack(Update);
  36. }
  37. public void Update()
  38. {
  39. CombatController.Update(Time.deltaTime);
  40. }
  41. public void Dispose()
  42. {
  43. StaticUpdater.Instance.RemoveRenderUpdateCallBack(Update);
  44. }
  45. }
  46. }