| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | using Common.Utility.CombatEvent;using Fort23.Core;namespace GameLogic.Combat.Skill{    /// <summary>    /// 大道技能  星辰道:每次释放功法时获得一定的能量,能量满后提升转盘速度    /// </summary>    public class DS60101 : SkillBasic    {        public float currEnergy = 0;        private float _currTime;        public bool isSkillActive;        public event System.Action OnSkillActivefinish;        public bool isStop;        public void Stop()        {            isStop = true;            if (isSkillActive)            {                Finish();            }        }        protected override void ProUseSkill()        {        }        protected override void ProInitSkill()        {            CombatEventManager.Instance.AddEventListener(CombatEventType.UseSkill, UseSkill);        }        private void UseSkill(IEventData iEventData)        {            if (isStop)            {                return;            }            CombatUseSkillEventData combatUseSkillEventData = iEventData as CombatUseSkillEventData;            if (combatUseSkillEventData.useSkill.CombatHeroEntity == CombatHeroEntity &&                combatUseSkillEventData.useSkill.SelfSkillConfig.SkillType == 1)            {                if (isSkillActive)                {                    return;                }                currEnergy += SelfSkillConfig.effectValue[0];                if (currEnergy >= SelfSkillConfig.effectValue[1])                {                    isSkillActive = true;                    _currTime = 0;                    currEnergy = 0;                    CombatHeroEntity.CurrCombatHeroInfo.addAttSpeed_bl += SelfSkillConfig.effectValue[2];                }            }        }        private void Finish()        {            if (isSkillActive)            {                CombatHeroEntity.CurrCombatHeroInfo.addAttSpeed_bl -= SelfSkillConfig.effectValue[2];                isSkillActive = false;                OnSkillActivefinish?.Invoke();            }        }        protected override void ProCombatUpdate(float time)        {            if (isSkillActive)            {                _currTime += time;                if (_currTime >= SelfSkillConfig.effectValue[4])                {                    Finish();                }            }        }        protected override void ProDispose()        {            CombatEventManager.Instance.RemoveEventListener(CombatEventType.UseSkill, UseSkill);        }    }}
 |