using Common.Utility.CombatEvent; using Fort23.Core; namespace GameLogic.Combat.Skill { /// /// 大道技能 星辰道:每次释放功法时获得一定的能量,能量满后提升转盘速度 /// 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); } } }