2021-04-08 20:09:59 +08:00
|
|
|
|
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);
|
2021-04-10 22:49:00 +08:00
|
|
|
|
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;
|
|
|
|
|
}
|
2021-04-08 20:09:59 +08:00
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|