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; // } combatHeroEntity.CombatAIBasic.isAlert = true; combatHeroEntity.GetMainHotPoin(true).IsHide = true; CombatEventManager.Instance.AddEventListener(CombatEventType.ActiveCombat, ActiveCombat); // TimeLineEventLogicGroupBasic timeLineEventLogicGroup = // combatHeroEntity.combatHeroTimeLineControl.TimeLineData // .GetTimeLineEventLogicGroup("xiumian", null); // if (timeLineEventLogicGroup != null) // { // timeLineEventLogicGroup.SetCombatInfo(combatHeroEntity, null, null, new TriggerData(), null); // timeLineEventLogicGroup.TimeLineUpdateEnd = delegate { FinishTimeLine(); }; // combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup(timeLineEventLogicGroup); // } // else // { // combatHeroEntity.GameObject.SetActive(false); // FinishTimeLine(); // } } 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); } } }