private void RegisterType(Type listenerType) { MethodInfo[] methods = listenerType.GetMethods(); for (int i = 0; i < methods.Length; i++) { if (methods[i].Name.StartsWith("On")) { ParameterInfo[] parameters = methods[i].GetParameters(); if (parameters.Length == 2 && IsClassOrSub(parameters[0].ParameterType, typeof(IEventSender)) && IsClassOrSub(parameters[1].ParameterType, typeof(XEvent))) { string methSuffix = methods[i].Name.Substring(2); HandlingMethod meth = new HandlingMethod(methods[i], listenerType); List <HandlingMethod> evHanlders; if (!handlers.TryGetValue(methSuffix, out evHanlders)) { evHanlders = new List <HandlingMethod>(); handlers.Add(methSuffix, evHanlders); } evHanlders.Add(meth); handlingMethods[listenerType].Add(meth); } } } }
public abstract bool IsCardFixed(Room room, Player from, Player to, string flags, HandlingMethod method);
public override int AskForCardChosen(Player who, string flags, string reason, HandlingMethod method, List <int> disabled_ids) { SkillEvent e = Engine.GetSkillEvent(reason); if (e != null) { List <int> result = e.OnCardsChosen(this, self, who, flags, 1, 1, disabled_ids); if (result != null && result.Count == 1) { return(result[0]); } } UseCard c = Engine.GetCardUsage(reason); if (c != null) { List <int> result = c.OnCardsChosen(this, self, who, flags, 1, 1, disabled_ids); if (result != null && result.Count == 1) { return(result[0]); } } ScoreStruct score = FindCards2Discard(self, who, string.Empty, flags, method, 1, false, disabled_ids); if (score.Ids != null && score.Ids.Count == 1) { return(score.Ids[0]); } return(-1); }