using Cal; namespace ET { public class SkillOptionLogic_延迟操作 : SkillOptionLogicBase { public override SkillOptionType skillOptionType => SkillOptionType.延迟操作; public override SkillOptionBase skillOptionBase { get; set; } SkillOption_延迟操作 skillOption; public override void HandleEvent(ISkillSender skillSender) { skillOption = skillOptionBase.As(); ExecuteAsync(skillSender).Coroutine(); } private async ETVoid ExecuteAsync(ISkillSender skillSender) { if (!SkillHelper.GetParam(skillOption.time, skillSender.skillLogic.skillConfigId, out var delayTime)) return; var target = skillSender.caster.GetComponent().currTarget; await TimerComponent.Instance.WaitAsync((long)delayTime * 1000); if (!target) { Log.Error($"taget is null where id is {target?.Id}"); return; } if (!skillSender.caster) { Log.Error($"caster is null where id is {target?.Id}"); return; } var targetComponent = skillSender.caster.GetComponent(); var oldTarget = targetComponent.currTarget; targetComponent.currTarget = target; foreach (var item in skillOption.value) { var skillOptionLogicBase = SkillOptionFactory.AcquireSkillOptionLogic(item); skillSender.skillLogic.skillOptionLogics.Add(skillOptionLogicBase); skillOptionLogicBase.HandleEvent(skillSender); } targetComponent.currTarget = oldTarget; } } }