33 lines
1.5 KiB
C#
33 lines
1.5 KiB
C#
|
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<SkillOption_延迟操作>();
|
|||
|
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<TargetableUnitComponent>().currTarget;
|
|||
|
await TimerComponent.Instance.WaitAsync((long)delayTime * 1000);
|
|||
|
var targetComponent = skillSender.caster.GetComponent<TargetableUnitComponent>();
|
|||
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|