using Common.Utility.CombatEvent; using Core.State; using Fort23.Core; using GameLogic.Combat.CombatState; using GameLogic.Combat.CombatType; using GameLogic.CombatScenesTool; using UnityEngine; using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface; namespace GameLogic.Combat.CombatTool { public class CombatController { public static CombatController currActiveCombat; public CombatHeroController CombatHeroController; public CombatCameraControllder CombatCameraControllder; public CombatTypeBasic CombatTypeBasic; protected StateControl stateControl; private AssetHandle scenesHandle; public GameObject gameObject; public GameTimeLineParticleFactory GameTimeLineParticleFactory; public bool isUpdate; public CombatStateBasic CurrState { get { return stateControl.CurrIState as CombatStateBasic; } } public async CTask InitCombat() { GameTimeLineParticleFactory = new GameTimeLineParticleFactory(); TimeLineFxParticleTool.Instance.Init(GameTimeLineParticleFactory); currActiveCombat = this; stateControl = new StateControl(); stateControl.AddState("idle", new CombatIdleState(this)); stateControl.AddState("update", new CombatUpdateState(this)); scenesHandle = await AssetBundleLoadManager.Instance.LoadAssetAsyncTask("Chapter01.prefab"); gameObject = scenesHandle.AssetObject(); gameObject.SetActive(true); Camera camera = Camera.main; CombatCameraControllder = new CombatCameraControllder(); CombatCameraControllder.Init(this, camera); CombatHeroController = new CombatHeroController(); CombatHeroController.Init(this); CombatTypeBasic = new TestCombatType(); CombatTypeBasic.Init(this); await CombatTypeBasic.StartGame(); ChangeState("update"); isUpdate = true; } public void ChangeState(string name) { stateControl.ChangeState(name); } public void Update(float t) { if (!isUpdate) { return; } stateControl.Update(t); } } }