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

43 lines
1.8 KiB
C#
Raw Normal View History

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;
}
}
}