| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;using Common.Utility.CombatEvent;using Fort23.Core;using GameLogic.Combat.CombatTool;namespace GameLogic.Combat.Hero.State{    /// <summary>    /// 英雄的休眠状态    /// </summary>    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<CombatHeroHitPoint>(true).IsHide = true;            CombatEventManager.Instance.AddEventListener(CombatEventType.ActiveCombat, ActiveCombat);            TimeLineEventLogicGroupBasic timeLineEventLogicGroup =                combatHeroEntity.combatHeroTimeLineControl.TimeLineData                    .GetTimeLineEventLogicGroup<TimeLineEventLogicGroupBasic>("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);        }    }}
 |