50 lines
1.8 KiB
C#
Executable File
50 lines
1.8 KiB
C#
Executable File
using Cal;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace ET
|
|
{
|
|
public static class SelectSingleTargetSystem
|
|
{
|
|
|
|
public static TargetableUnitBase GetTarget(this SelectSingleTarget self, ISkillSender skillSender)
|
|
{
|
|
if (skillSender?.caster == null)
|
|
{
|
|
// Log.Error($"skillSender is null :{skillSender == null} caster is null :{skillSender?.caster == null}");
|
|
return null;
|
|
}
|
|
TargetableUnitComponent targetableUnitComponent = skillSender.caster.GetComponent<TargetableUnitComponent>();
|
|
if (targetableUnitComponent == null)
|
|
{
|
|
Log.Warning($"战斗已经结束");
|
|
return null;
|
|
}
|
|
Unit target = null;
|
|
switch (self.targetType)
|
|
{
|
|
case SingleTargetType.施法者:
|
|
target = skillSender.caster;
|
|
break;
|
|
case SingleTargetType.目标:
|
|
target = targetableUnitComponent.currTarget;
|
|
break;
|
|
case SingleTargetType.攻击者:
|
|
target = skillSender.caster;
|
|
break;
|
|
case SingleTargetType.modifier附着者:
|
|
if (skillSender is not ModifierSkillSender modifierSkillSender)
|
|
Log.Error($"{skillSender} is not modifier,skillLogicId = {skillSender.skillConfigId}");
|
|
else
|
|
target = modifierSkillSender.target;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
TargetableSingleUnit targetableSingleUnit = EntityFactory.Create<TargetableSingleUnit, Unit>(Game.Scene, target);
|
|
return targetableSingleUnit;
|
|
}
|
|
}
|
|
}
|