| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;using GameLogic.Combat.CombatTool;namespace GameLogic.Combat.Hero.State{    public class CombatHeroDieState : CombatHeroStateBasic    {        public float resurrectionTime;        protected bool isStartResurrection;        protected bool isSwitch = false;        private TimeLineEventLogicGroupBasic _timeLineEventLogicGroupBasic;        public CombatHeroDieState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)        {        }        public override bool IsSwitch(IState nextState)        {            return isSwitch;        }        protected override void ProEnter()        {            isSwitch = false;            resurrectionTime = 0;            TimeLineEventLogicGroupBasic timeLineEventLogicGroup =                combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup("die");            if (timeLineEventLogicGroup != null)            {                timeLineEventLogicGroup.TimeLineUpdateEnd = delegate                {                    if (combatHeroEntity.IsEnemy)                    {                        CombatController.currActiveCombat.CombatHeroController.RemoveDieHero(combatHeroEntity);                    }                    else                    {                        isStartResurrection = true;                        _timeLineEventLogicGroupBasic =                            combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup("die_idle");                    }                };            }            else            {                if (combatHeroEntity.IsEnemy)                {                    CombatController.currActiveCombat.CombatHeroController.RemoveDieHero(combatHeroEntity);                }                else                {                    isStartResurrection = true;                    _timeLineEventLogicGroupBasic =                        combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup("die_idle");                }            }            // combatHeroEntity.Dispose();        }        protected override void ProExit()        {            _timeLineEventLogicGroupBasic?.BreakTimeLine(combatHeroEntity);        }        protected override void ProUpdate(float t)        {            if (isStartResurrection)            {                resurrectionTime += t;                if (resurrectionTime > 60)                {                    isSwitch = true;                    isStartResurrection = false;                    resurrectionTime = 0;                    combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.Resurrection);                }            }        }    }}
 |