Exemplo n.º 1
0
        public override void DoAction(IEventArgs args)
        {
            if (values == null)
            {
                values = new List <ArgValue>();
            }

            foreach (CommonGameAction function in args.Functions)
            {
                if (function.GetKey() == FreeUtil.ReplaceVar(key, args))
                {
                    GameFunc func = function.ToGameFunc();
                    checkArg(func);

                    try
                    {
                        //long mem = GC.GetTotalMemory(false);
                        func.Action(values, args);
                        //Debug.LogFormat("call func {0}, args:{1}, memory:{2}", key, ToArgString(), GC.GetTotalMemory(false) - mem);
                        if (FreeLog.IsEnable())
                        {
                            FreeLog.CallFunc(string.Format("call func:{0}, args:{1}", key, ToArgString()));
                        }
                    }
                    catch (Exception e)
                    {
                        FreeLog.Error("call func " + key + " failed.\n"
                                      + ExceptionUtil.GetExceptionContent(e), this);
                    }

                    break;
                }
            }
        }
Exemplo n.º 2
0
        public override void DoAction(IEventArgs args)
        {
            GameFunc func = selector.Select(args);

            if (func != null)
            {
                func.Action(this.args, args);
            }
        }
Exemplo n.º 3
0
 private void checkArg(GameFunc func)
 {
     if (values != null)
     {
         foreach (ArgValue av in values)
         {
             bool has = false;
             foreach (FuncArg fa in func.GetArgs())
             {
                 if (av.GetName() == fa.GetName())
                 {
                     has = true;
                     break;
                 }
             }
             if (!has)
             {
                 throw new GameConfigExpception("func '" + func.GetKey()
                                                + "(" + func.GetName() + ")' does not have arg '"
                                                + av.GetName() + "'");
             }
         }
     }
 }