CombatController.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using Common.Utility.CombatEvent;
  2. using Core.Audio;
  3. using Core.State;
  4. using Fort23.Core;
  5. using GameLogic.Combat.CombatState;
  6. using GameLogic.Combat.CombatType;
  7. using GameLogic.Combat.Hero.HeroGPU;
  8. using GameLogic.CombatScenesTool;
  9. using UnityEngine;
  10. using Utility.CustomizeTimeLogic.FxLogic.TimeLineEvent;
  11. using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
  12. using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic;
  13. namespace GameLogic.Combat.CombatTool
  14. {
  15. public class CombatController : ITimeLineAudio
  16. {
  17. public static CombatController currActiveCombat;
  18. public CombatHeroController CombatHeroController;
  19. public CombatCameraControllder CombatCameraControllder;
  20. public CombatTypeBasic CombatTypeBasic;
  21. protected StateControl stateControl;
  22. private AssetHandle scenesHandle;
  23. public GameObject gameObject;
  24. public GameTimeLineParticleFactory GameTimeLineParticleFactory;
  25. public bool isUpdate;
  26. public CombatStateBasic CurrState
  27. {
  28. get { return stateControl.CurrIState as CombatStateBasic; }
  29. }
  30. public async CTask InitCombat(StartCombatInfo startCombatInfo)
  31. {
  32. TimeLineSingletonEventManager.Instance.AddTimeLineBasic(this);
  33. GameTimeLineParticleFactory = new GameTimeLineParticleFactory();
  34. TimeLineFxParticleTool.Instance.Init(GameTimeLineParticleFactory);
  35. currActiveCombat = this;
  36. stateControl = new StateControl();
  37. stateControl.AddState("idle", new CombatIdleState(this));
  38. stateControl.AddState("update", new CombatUpdateState(this));
  39. scenesHandle =
  40. await AssetBundleLoadManager.Instance.LoadAssetAsyncTask<GameObject>("Chapter01.prefab");
  41. gameObject = scenesHandle.AssetObject<GameObject>();
  42. gameObject.SetActive(true);
  43. Camera camera = Camera.main;
  44. CombatCameraControllder = new CombatCameraControllder();
  45. CombatCameraControllder.Init(this, camera);
  46. CombatHeroController = new CombatHeroController();
  47. CombatHeroController.Init(this);
  48. switch (startCombatInfo.CombatType)
  49. {
  50. case CombatType.CombatType.TestCombat:
  51. CombatTypeBasic = new TestCombatType();
  52. break;
  53. case CombatType.CombatType.LevelBattle:
  54. CombatTypeBasic = new LevelBattleCombatType();
  55. break;
  56. }
  57. CombatTypeBasic.Init(this,startCombatInfo);
  58. await CombatTypeBasic.StartGame();
  59. ChangeState("update");
  60. isUpdate = true;
  61. }
  62. public void ChangeState(string name)
  63. {
  64. stateControl.ChangeState(name);
  65. }
  66. public void Update(float t)
  67. {
  68. if (!isUpdate)
  69. {
  70. return;
  71. }
  72. stateControl.Update(t);
  73. CombatTypeBasic?.Update(t);
  74. }
  75. public void PlayAudio(string audioName, bool isLoop)
  76. {
  77. AudioManager.Instance.PlayAudio(audioName, isLoop);
  78. }
  79. }
  80. }