/// <summary> /// Returns true if the target is targetable (according to the specified targeting rules) /// </summary> /// <param name="target"></param> /// <param name="fromTile"></param> /// <returns></returns> public static bool CanTarget(TargetInfo targetRules, Unit targeter, Unit target, Tile fromTile) { if (target.IsDead()) { return(false); } if (target == targeter && !targetRules.TargetSelf) { return(false); } if (!targetRules.TargetSelf && (!targetRules.TargetFriendly && target.OwnerID == targeter.OwnerID)) { return(false); } if (!targetRules.TargetEnemies && target.OwnerID != targeter.OwnerID) { return(false); } if (!IsInRangeAndHasLOS(targeter, target, targetRules.GetRange(targeter), fromTile)) { return(false); } return(true); }
public float GetRange(Unit u) { return(TargetRule.GetRange(u)); }