2021-04-08 20:09:59 +08:00
|
|
|
|
using Cal;
|
2021-04-20 00:25:04 +08:00
|
|
|
|
|
2021-04-08 20:09:59 +08:00
|
|
|
|
namespace ET
|
|
|
|
|
{
|
2021-04-20 00:25:04 +08:00
|
|
|
|
public class SkillOptionLogic_延迟操作: SkillOptionLogicBase
|
2021-04-08 20:09:59 +08:00
|
|
|
|
{
|
|
|
|
|
public override SkillOptionType skillOptionType => SkillOptionType.延迟操作;
|
|
|
|
|
public override SkillOptionBase skillOptionBase { get; set; }
|
|
|
|
|
|
|
|
|
|
SkillOption_延迟操作 skillOption;
|
2021-04-20 00:25:04 +08:00
|
|
|
|
|
2021-04-08 20:09:59 +08:00
|
|
|
|
public override void HandleEvent(ISkillSender skillSender)
|
|
|
|
|
{
|
|
|
|
|
skillOption = skillOptionBase.As<SkillOption_延迟操作>();
|
2023-09-07 00:06:37 +08:00
|
|
|
|
if (!SkillHelper.GetParam(skillOption.time, skillSender.skillConfigId, out float delayTime))
|
|
|
|
|
return;
|
|
|
|
|
ExecuteAsync(skillSender,delayTime).Coroutine();
|
2021-04-08 20:09:59 +08:00
|
|
|
|
}
|
2023-09-07 00:06:37 +08:00
|
|
|
|
private async ETTask ExecuteAsync(ISkillSender skillSender, float delayTime)
|
2021-04-08 20:09:59 +08:00
|
|
|
|
{
|
2021-04-11 19:50:39 +08:00
|
|
|
|
Unit target = skillSender.caster.GetComponent<TargetableUnitComponent>().currTarget;
|
2021-04-20 00:25:04 +08:00
|
|
|
|
long targetInstanceId = target.InstanceId;
|
|
|
|
|
await TimerComponent.Instance.WaitAsync((long) delayTime * 1000);
|
|
|
|
|
if (target.InstanceId != targetInstanceId)
|
2021-04-10 22:49:00 +08:00
|
|
|
|
{
|
2021-04-20 00:25:04 +08:00
|
|
|
|
Log.Error($"taget is null where id is {target?.Id} {target.InstanceId} old instanceId = {targetInstanceId}");
|
2021-04-10 22:49:00 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
2021-04-20 00:25:04 +08:00
|
|
|
|
|
2021-04-10 22:49:00 +08:00
|
|
|
|
if (!skillSender.caster)
|
|
|
|
|
{
|
|
|
|
|
Log.Error($"caster is null where id is {target?.Id}");
|
|
|
|
|
return;
|
|
|
|
|
}
|
2021-04-20 00:25:04 +08:00
|
|
|
|
|
2021-04-11 19:50:39 +08:00
|
|
|
|
TargetableUnitComponent targetComponent = skillSender.caster.GetComponent<TargetableUnitComponent>();
|
|
|
|
|
Unit oldTarget = targetComponent.currTarget;
|
2021-04-08 20:09:59 +08:00
|
|
|
|
targetComponent.currTarget = target;
|
2021-04-11 19:50:39 +08:00
|
|
|
|
foreach (SkillOptionBase item in skillOption.value)
|
2021-04-08 20:09:59 +08:00
|
|
|
|
{
|
2021-04-11 19:50:39 +08:00
|
|
|
|
SkillOptionLogicBase skillOptionLogicBase = SkillOptionFactory.AcquireSkillOptionLogic(item);
|
2021-04-08 20:09:59 +08:00
|
|
|
|
skillOptionLogicBase.HandleEvent(skillSender);
|
|
|
|
|
}
|
2021-04-20 00:25:04 +08:00
|
|
|
|
|
2021-04-08 20:09:59 +08:00
|
|
|
|
targetComponent.currTarget = oldTarget;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|