using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic; using Common.Utility.CombatEvent; using Fort23.Core; using GameLogic.Combat.CombatTool; namespace GameLogic.Combat.Hero.State { /// /// 英雄的休眠状态 /// public class CombatHeroXiuMianState : CombatHeroStateBasic { private TimerEntity _timerEntity; public CombatHeroXiuMianState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity) { } protected override void ProEnter() { // if (!combatHeroEntity.IsEnemy) // { combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle); return; // } } protected void FinishTimeLine() { if (CombatController.currActiveCombat.CombatTypeBasic.isActiveCombat) { ActiveHero(); } } protected void ActiveHero() { _timerEntity = TimerComponent.Instance.AddTimer(CombatCalculateTool.Instance.GetOdd(0, 300), delegate { combatHeroEntity.GameObject.SetActive(true); combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.Active); }); } private void ActiveCombat(IEventData eventData) { CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat); ActiveHero(); } protected override void ProExit() { CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat); } public override bool IsUpdateLockTarget() { return false; } protected override void ProDispose() { TimerComponent.Instance.Remove(_timerEntity); CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat); } } }