zxl
/
CTT
forked from Cal/CTT
1
0
Fork 0
CTT/Server/Hotfix/Game/SkillSystem/NewSkill/Component/SkillOptions/SkillOptionLogic_延迟操作.cs

48 lines
1.9 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
using Cal;
2021-04-08 20:09:59 +08:00
namespace ET
{
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-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;
long targetInstanceId = target.InstanceId;
await TimerComponent.Instance.WaitAsync((long) delayTime * 1000);
if (target.InstanceId != targetInstanceId)
2021-04-10 22:49:00 +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-10 22:49:00 +08:00
if (!skillSender.caster)
{
Log.Error($"caster is null where id is {target?.Id}");
return;
}
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-08 20:09:59 +08:00
targetComponent.currTarget = oldTarget;
}
}
}