コード例 #1
0
ファイル: EventManager.cs プロジェクト: Xenation/Xenon
 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);
             }
         }
     }
 }
コード例 #2
0
 public abstract bool IsCardFixed(Room room, Player from, Player to, string flags, HandlingMethod method);
コード例 #3
0
        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);
        }