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; } } }
public override void DoAction(IEventArgs args) { GameFunc func = selector.Select(args); if (func != null) { func.Action(this.args, args); } }
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() + "'"); } } } }