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; } } }
private void Log(IEventArgs args) { string s = string.Empty; int realScope = FreeUtil.ReplaceInt(scope, args); switch (realScope) { case SCOPE_ALL: { s = "全部玩家"; break; } case SCOPE_OBSERVER: { s = "观察者"; break; } case SCOPE_PLYAER: { s = "玩家" + player; break; } case SCOPE_TEAMATE: { s = "玩家" + player + "的队友"; break; } } FreeLog.Message(string.Format("{0} \n{1}\n范围:{2}", FreeMessageConstant.GetMessageDesc(builder.Key), builder, s), args); }
public override void DoAction(IEventArgs args) { if (FreeLog.IsEnable()) { logger.InfoFormat("{0} | {1}", DateTime.Now.ToString(), log); } }
protected override void ExecuteUserCmd(PlayerEntity player, IUserCmd cmd) { ISkillArgs args = (ISkillArgs)contexts.session.commonSession.FreeArgs; if (SharedConfig.IsServer) { FreeLog.Reset(); } args.GetInput().SetUserCmd(cmd); if (player.gamePlay.LifeState != (int)EPlayerLifeState.Dead) { FreeData fd = ((FreeData)player.freeData.FreeData); args.TempUse("current", fd); if (cmd.IsPDown) { Debug.LogFormat("p down {0}, is server {1}", cmd.Seq, SharedConfig.IsServer); } fd.GetUnitSkill().Frame(args); args.Resume("current"); } if (SharedConfig.IsServer) { FreeLog.Print(); } }
public virtual void Action(IList <ArgValue> funcArgs, IEventArgs args) { long s = FreeTimeDebug.RecordStart("call " + name + "(" + key + ")"); FreeLog.CallFunc("call " + name + "(" + key + "):"); if (funcArgs != null) { foreach (FuncArg arg in this.args) { SetArg(arg, funcArgs, args); } } if (action != null) { action.Act(args); } if (funcArgs != null) { foreach (FuncArg arg in this.args) { RemoveArg(arg, args); } } FreeTimeDebug.RecordEnd("call " + name + "(" + key + ")", s); }
public virtual void Frame(ISkillArgs args) { for (int i = 0; i < skills.Count; i++) { ISkill skill = skills[i]; skill.SetDisable(disable); //FreeLog.ActionMark = unit.GetID() + "'s skill " + skill.ToString(); FreeLog.SetTrigger(skill); skill.Frame(args); } if (removes.Count > 0) { for (int i = 0; i < removes.Count; i++) { ISkill skill_1 = removes[i]; skills.Remove(skill_1); } removes.Clear(); } if (adds.Count > 0) { for (int i = 0; i < adds.Count; i++) { ISkill skill_1 = adds[i]; skills.Add(skill_1); } adds.Clear(); } effects.Frame(args); }
public override void DoAction(IEventArgs args) { if (!initialed) { if (prepare != null) { prepare.Act(args); } initialed = true; } FreeLog.SetTrigger(trigger); order.Act(args); if (frame != null) { frame.Act(args); } if (args.FreeContext.AiSuccess) { if (frame is TestCaseMultiAction) { ((TestCaseMultiAction)frame).Record(args); } if (clean != null) { clean.Act(args); } } }
public override void DoAction(IEventArgs args) { if (values != null) { args.TempUse(UnitTestConstant.Tester, GetPlayer(args)); GameTrigger trigger = FreeLog.GetTrigger(); foreach (ITestValue value in values) { TestValue tv = value.GetCaseValue(args); tv.Name = value.Name; if (!dic.ContainsKey(tv.Name)) { dic.Add(tv.Name, new List <TestValue>()); dic[tv.Name].Add(tv); } List <TestValue> list = dic[tv.Name]; if (!list[list.Count - 1].IsSame(tv)) { list.Add(tv); } } args.Resume(UnitTestConstant.Tester); } }
public void PlayerPressCmd(Contexts room, PlayerEntity player, IUserCmd cmd) { FreeLog.Reset(); args.input.SetUserCmd(cmd); FreeData freeData = (FreeData)player.freeData.FreeData; if (freeData.Player.gamePlay.LifeState != (int)EPlayerLifeState.Dead) { args.TempUse("current", freeData); args.FreeContext.Bufs.Eat(player, args); freeData.freeInventory.UsingItem(args); //freeData.GetUnitSkill().Frame(args); freeData.StateTimer.AutoRemove(args, serverTime); args.Resume("current"); } FreeLog.Print(); }
public virtual void Eat(PlayerEntity player, ISkillArgs skill) { foreach (FreeBuf buf in map.Values) { FreeLog.SetTrigger(buf); buf.Eat(player, skill); } }
public void Record(IEventArgs args) { foreach (var t in dic) { TestValue[] tvs = t.Value.ToArray(); RecordResult(args, FreeLog.GetTrigger(), tvs); } }
public virtual void Eat(PlayerEntity player, ISkillArgs skill) { MyDictionary <string, FreeBuf> .Enumerator it = map.GetEnumerator(); while (it.MoveNext()) { FreeBuf buf = it.Current.Value; FreeLog.SetTrigger(buf); buf.Eat(player, skill); } }
public virtual void AddFreeBuf(FreeBuf buf, IEventArgs args) { string key = FreeUtil.ReplaceVar(buf.GetKey(), args); if (map.ContainsKey(key)) { FreeLog.Error("buf '" + key + "' 覆盖了原有的BUF", null); } this.map[key] = buf; }
private void UpdateFreeMoveEntity(Contexts room, int interval) { FreeMoveEntity[] freeMoves = room.freeMove.GetEntities(); foreach (var freeMoveEntity in freeMoves) { if (freeMoveEntity.freeData.FreeData != null) { FreeLog.SetTrigger(freeMoveEntity.freeData.FreeData); ((FreeEntityData)freeMoveEntity.freeData.FreeData).Frame(args, interval); } } }
public static void Handle(ServerRoom room, DebugCommand message, PlayerEntity player) { if (commandDic.ContainsKey(message.Command.ToLower())) { FreeLog.Reset(); IGameAction action = commandDic[message.Command.ToLower()]; if (FreeLog.IsEnable()) { FreeLog.SetTrigger(string.Format("命令行 {0}: {1}", message.Command, string.Join(" ", message.Args))); } if (commandPara == null) { commandPara = new StringPara("command", ""); } if (message.Args != null) { for (int i = 1; i <= message.Args.Length; i++) { room.FreeArgs.TempUsePara(new StringPara("arg" + i, message.Args[i - 1])); } } room.FreeArgs.TempUsePara(commandPara); room.FreeArgs.TempUse("current", (FreeData)player.freeData.FreeData); action.Act(room.FreeArgs); if (message.Command == "relive") { player.isFlagCompensation = true; } room.FreeArgs.Resume("current"); room.FreeArgs.ResumePara("command"); if (message.Args != null) { for (int i = 1; i <= message.Args.Length; i++) { room.FreeArgs.ResumePara("arg" + i); } } FreeLog.Print(); } }
public virtual void Trigger(IEventArgs args) { if (!disable) { FreeLog.SetTrigger(this); FreeLog.ActionMark = this.@group + " " + this.name + " " + this.key; long s = FreeTimeDebug.RecordStart("trigger " + name); foreach (IGameAction de in actions) { de.Act(args); } FreeTimeDebug.RecordEnd("trigger " + name, s); } }
private void SetArg(FuncArg arg, IList <ArgValue> funcArgs, IEventArgs args) { ArgValue fa = GetArgValue(arg, funcArgs, args); if (fa != null) { IPara para = ParaUtil.GetPara(arg.GetType()); if (para != null) { try { IPara old = new ParaExp(fa.GetValue()).GetSourcePara(args); if (old != null) { if (old.GetValue() != null) { para = para.Initial("=", old.GetValue().ToString()); } else { para = para.Initial("=", string.Empty); } } else { para = para.Initial("=", FreeUtil.ReplaceNumber(fa.GetValue(), args)); } } catch (Exception) { para = para.Initial("=", FreeUtil.ReplaceNumber(fa.GetValue(), args)); } para.SetName("arg_" + arg.GetName()); args.GetDefault().GetParameters().TempUse(para); IPara p = (IPara)para.Borrow(); p.SetName(arg.GetName()); if (para.GetValue() != null) { p.SetValue("=", para); } args.GetDefault().GetParameters().TempUse(p); FreeLog.FuncArg(p.ToString()); } else { // 非简单变量 ((BaseEventArgs)args).TempUse(arg.GetName(), args.GetUnit(fa.GetValue())); } } }
public override void DoAction(IEventArgs args) { FreeLog.SetTrigger(trigger); order.Act(args); if (frame != null) { frame.Act(args); } if (args.FreeContext.AiSuccess) { if (frame is TestCaseMultiAction) { ((TestCaseMultiAction)frame).Record(args); } } }
public override void DoAction(IEventArgs args) { if (debug) { FreeLog.Enable(); } else { FreeLog.Disable(); } if (!string.IsNullOrEmpty(fields)) { FreeLog.SetParas(fields); } }
public override void DoAction(IEventArgs args) { if (values != null) { SimpleParaList testParaList = new SimpleParaList(); FreeData fd = GetPlayer(args); if (null != fd) { PlayerEntity player = fd.Player; var entity = args.GameContext.mapObject.GetEntityWithEntityKey(new EntityKey(player.gamePlay.UseEntityId, (int)EEntityType.MapObject)); if (null != entity && entity.hasDoorData) { testParaList.AddFields(new ObjectFields(entity.doorData)); } } SimpleParable sp = new SimpleParable(testParaList); args.TempUse("testPara", sp); args.TempUse(UnitTestConstant.Tester, GetPlayer(args)); GameTrigger trigger = FreeLog.GetTrigger(); foreach (ITestValue value in values) { TestValue tv = value.GetCaseValue(args); tv.Name = value.Name; if (!dic.ContainsKey(tv.Name)) { dic.Add(tv.Name, new List <TestValue>()); dic[tv.Name].Add(tv); } List <TestValue> list = dic[tv.Name]; if (!list[list.Count - 1].IsSame(tv)) { list.Add(tv); } } args.Resume("testPara"); args.Resume(UnitTestConstant.Tester); } }
public override void DoAction(IEventArgs args) { if (values != null) { args.TempUse(UnitTestConstant.Tester, GetPlayer(args)); GameTrigger trigger = FreeLog.GetTrigger(); foreach (var value in values) { TestValue tv = value.GetCaseValue(args); tv.Name = value.Name; RecordResult(args, trigger, new TestValue[] { tv }); } args.Resume(UnitTestConstant.Tester); } }
public void Update(Contexts room, int interval) { FreeLog.Reset(); //if (firstTime == false) //{ // GameStart(room); // firstTime = true; //} serverTime = Runtime.CurrentTimeMillis() - startTime; //RandomUtil.SetSeed((int) serverTime); args.FreeContext.TimerTask.TimeElapse(args, (int)(serverTime - lastServerTime)); UpdateFreeMoveEntity(room, interval); args.FreeContext.TestCase.Frame(args); args.FreeContext.MultiFrame.Act(args); PlayerEntity[] players = args.GameContext.player.GetInitializedPlayerEntities(); for (int i = 0; i < players.Length; i++) { FreeData freeData = (FreeData)players[i].freeData.FreeData; freeData.Bufs.Frame(args); freeData.EffectBufs.Update(args); if (!args.Triggers.IsEmpty(FreeTriggerConstant.FRAME_PLAYER)) { args.Trigger(FreeTriggerConstant.FRAME_PLAYER, new TempUnit("player", freeData)); } } if (!this.args.Triggers.IsEmpty(FreeTriggerConstant.FRAME)) { this.args.Triggers.Trigger(FreeTriggerConstant.FRAME, args); } lastServerTime = serverTime; FreeLog.Print(); }
public override void DoAction(IEventArgs args) { builder = FreePool.Allocate(); BuildMessage(args); //if (builder.Key == 52) //{ // Debug.Log(builder.ToString()); //} if (FreeLog.IsEnable()) { Log(args); } if (sender != null) { sender.SendMessage(args, builder, FreeUtil.ReplaceInt(scope, args), FreeUtil.ReplaceVar(player, args)); } }