コード例 #1
0
ファイル: ActionRegistry.cs プロジェクト: Ginrey/MassPayouts
 public Type GetActionType(ActionIdentifier actionId)
 {
     if (!TryGetActionType(actionId, out var type))
     {
         throw new Exception("Unknown action");
     }
     return(type);
 }
コード例 #2
0
 public virtual void AddHandler(ActionIdentifier actionId, ActionEventHandler handler)
 {
     if (!Handlers.TryGetValue(actionId, out var handlersList))
     {
         handlersList = new List <ActionEventHandler>();
         Handlers.Add(actionId, handlersList);
     }
     handlersList.Add(handler);
 }
コード例 #3
0
ファイル: ActionRegistry.cs プロジェクト: Ginrey/MassPayouts
 public void Register(Type type, ActionIdentifier actionId)
 {
     if (!IAction.IsAction(type))
     {
         return;
     }
     IAction.ActionRegistry = this;
     _actions[actionId]     = type;
 }
コード例 #4
0
 public void HandleAction(Session session, ActionIdentifier actionId, IAction action)
 {
     if (Handlers.TryGetValue(actionId, out var handlersList))
     {
         var eventArgs = new ActionEventArgs(actionId, action);
         foreach (var handler in handlersList)
         {
             handler?.Invoke(this, eventArgs);
         }
     }
 }
コード例 #5
0
ファイル: ActionRegistry.cs プロジェクト: Ginrey/MassPayouts
        public bool TryGetAction(ActionIdentifier actionId, out IAction action)
        {
            if (TryGetActionType(actionId, out var type))
            {
                action = type.GetConstructor(_emptyTypes).Invoke(_emptyObjects) as IAction;
                return(true);
            }

            action = null;
            return(false);
        }
コード例 #6
0
        public static ActionIdentifier[] GetActionIdentifiers(Type type)
        {
            ValidateGameAction(type);
            var attributes = type.GetCustomAttributes(typeof(ActionIdentifier), false);

            if (ActionRegistry != null)
            {
                ActionIdentifier[] result = new ActionIdentifier[1];
                foreach (var att in (ActionIdentifier[])attributes)
                {
                    if (ActionRegistry.Contains(att))
                    {
                        result[0] = att;
                        return(result);
                    }
                }
            }
            return(attributes as ActionIdentifier[]);
        }
コード例 #7
0
 public virtual bool ContainsHandler(ActionIdentifier actionId)
 {
     return(Handlers.ContainsKey(actionId));
 }
コード例 #8
0
ファイル: ActionRegistry.cs プロジェクト: Ginrey/MassPayouts
 public void Remove(ActionIdentifier actionId)
 {
     _actions.Remove(actionId);
 }
コード例 #9
0
ファイル: ActionRegistry.cs プロジェクト: Ginrey/MassPayouts
 public bool Contains(ActionIdentifier actionId)
 {
     return(_actions.ContainsKey(actionId));
 }
コード例 #10
0
ファイル: ActionRegistry.cs プロジェクト: Ginrey/MassPayouts
 public bool TryGetActionType(ActionIdentifier actionId, out Type type)
 {
     return(_actions.TryGetValue(actionId, out type));
 }
コード例 #11
0
ファイル: ActionRegistry.cs プロジェクト: Ginrey/MassPayouts
 public IAction GetAction(ActionIdentifier actionId)
 {
     return(GetActionType(actionId).GetConstructor(_emptyTypes).Invoke(_emptyObjects) as IAction);
 }
コード例 #12
0
ファイル: ActionEventArgs.cs プロジェクト: Ginrey/MassPayouts
 public ActionEventArgs(ActionIdentifier actionId, IAction action)
 {
     ActionId = actionId;
     Action   = action;
 }