private static Dictionary<TargetMaskAttribute, MethodInfo> Handlers = typeof(TargetMaskProvider).MethodsWhereAttributes<TargetMaskAttribute>();
public static Fighter[] Handle(Fighter fighter, string identifier)
{
var handler = Handlers.FirstOrDefault(x => identifier.StartsWith(x.Key.Identifier));
if (handler.Value != null)
{
string value = identifier.Remove(0, handler.Key.Identifier.Length);
return (Fighter[])handler.Value.Invoke(null, new object[] { fighter, value });
}
else
{
return new Fighter[0];
}
}
[TargetMask("a")]
public static Fighter[] AllAllies(Fighter fighter, string value)
{
return fighter.Team.GetFighters().ToArray();
}