123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- using System;
- using Common.Utility.CombatEvent;
- using Common.Utility.CombatTimer;
- using Core.Audio;
- using Core.Event.Event;
- using Core.State;
- using Fort23.Core;
- using GameLogic.Combat.CombatState;
- using GameLogic.Combat.CombatType;
- using GameLogic.Combat.Hero.HeroGPU;
- using GameLogic.CombatScenesTool;
- using UnityEngine;
- using Utility.CustomizeTimeLogic.FxLogic.TimeLineEvent;
- using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
- using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic;
- namespace GameLogic.Combat.CombatTool
- {
- public class CombatController : ITimeLineAudio,IDisposable
- {
- public static CombatController currActiveCombat;
- public CombatHeroController CombatHeroController;
- public CombatCameraControllder CombatCameraControllder;
- public CombatTypeBasic CombatTypeBasic;
- protected StateControl stateControl;
- public CombatSenceController CombatSenceController;
- public GameTimeLineParticleFactory GameTimeLineParticleFactory;
- public bool isUpdate;
- /// <summary>
- /// 涨停游戏英雄AI行为
- /// </summary>
- public bool isStopAi;
- public float speed = 1;
- private bool _isFullUIShow;
-
- public CombatStateBasic CurrState
- {
- get { return stateControl.CurrIState as CombatStateBasic; }
- }
- public async CTask InitCombat(StartCombatInfo startCombatInfo)
- {
- TimeLineSingletonEventManager.Instance.AddTimeLineBasic(this);
- GameTimeLineParticleFactory = new GameTimeLineParticleFactory();
- TimeLineFxParticleTool.Instance.Init(GameTimeLineParticleFactory);
- currActiveCombat = this;
- stateControl = new StateControl();
- stateControl.AddState("idle", new CombatIdleState(this));
- stateControl.AddState("update", new CombatUpdateState(this));
- CombatSenceController = new CombatSenceController();
- await CombatSenceController.InitScenes();
- Camera camera = Camera.main;
- CombatCameraControllder = new CombatCameraControllder();
- CombatCameraControllder.Init(this, camera);
- CombatHeroController = new CombatHeroController();
- CombatHeroController.Init(this);
- switch (startCombatInfo.CombatType)
- {
- case CombatType.CombatType.TestCombat:
- CombatTypeBasic = new TestCombatType();
- break;
- case CombatType.CombatType.LevelBattle:
- CombatTypeBasic = new LevelBattleCombatType();
- break;
- }
- CombatTypeBasic.Init(this, startCombatInfo);
- await CombatTypeBasic.StartGame();
- ChangeState("update");
- isUpdate = true;
- EventManager.Instance.AddEventListener(CustomEventType.RefreshFull, RefreshFull);
- }
- private void RefreshFull(IEventData eventData)
- {
- RefreshFullEventData data = (RefreshFullEventData)eventData;
- _isFullUIShow = data.isFullShow;
- }
- public void ChangeState(string name)
- {
- stateControl.ChangeState(name);
- }
- public void Update(float t)
- {
- if (!isUpdate||_isFullUIShow)
- {
- return;
- }
- t *= speed;
- stateControl.Update(t);
- CombatTypeBasic?.Update(t);
- CombatTimerManager.Instance.ComabtUpdate(t);
- LateUpdate(t);
- }
- public void LateUpdate(float t)
- {
- CombatHeroController.LateUpdate(t);
- }
- public void PlayAudio(string audioName, bool isLoop)
- {
- AudioManager.Instance.PlayAudio(audioName, isLoop);
- }
- public void Dispose()
- {
- TimeLineSingletonEventManager.Instance.RemoveTimeLineBasic(this);
- CombatTypeBasic?.Dispose();
- CombatHeroController?.Dispose();
- CombatCameraControllder?.Dispose();
- CombatSenceController?.Dispose();
- GameTimeLineParticleFactory?.Dispose();
- EventManager.Instance.RemoveAllEventListener(CustomEventType.RefreshFull);
-
-
- }
- }
- }
|