CombatController.cs 3.4 KB

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