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
        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);
        }
Exemplo n.º 3
0
 public override void DoAction(IEventArgs args)
 {
     if (FreeLog.IsEnable())
     {
         logger.InfoFormat("{0} | {1}", DateTime.Now.ToString(), log);
     }
 }
Exemplo n.º 4
0
        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();
            }
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
                }
            }
        }
Exemplo n.º 8
0
        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);
            }
        }
Exemplo n.º 9
0
        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();
        }
Exemplo n.º 10
0
 public virtual void Eat(PlayerEntity player, ISkillArgs skill)
 {
     foreach (FreeBuf buf in map.Values)
     {
         FreeLog.SetTrigger(buf);
         buf.Eat(player, skill);
     }
 }
Exemplo n.º 11
0
 public void Record(IEventArgs args)
 {
     foreach (var t in dic)
     {
         TestValue[] tvs = t.Value.ToArray();
         RecordResult(args, FreeLog.GetTrigger(), tvs);
     }
 }
Exemplo n.º 12
0
 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);
     }
 }
Exemplo n.º 13
0
        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;
        }
Exemplo n.º 14
0
 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);
         }
     }
 }
Exemplo n.º 15
0
        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();
            }
        }
Exemplo n.º 16
0
 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);
     }
 }
Exemplo n.º 17
0
        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()));
                }
            }
        }
Exemplo n.º 18
0
 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);
         }
     }
 }
Exemplo n.º 19
0
 public override void DoAction(IEventArgs args)
 {
     if (debug)
     {
         FreeLog.Enable();
     }
     else
     {
         FreeLog.Disable();
     }
     
     if (!string.IsNullOrEmpty(fields))
     {
         FreeLog.SetParas(fields);
     }
 }
Exemplo n.º 20
0
        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);
            }
        }
Exemplo n.º 21
0
        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);
            }
        }
Exemplo n.º 22
0
        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();
        }
Exemplo n.º 23
0
        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));
            }
        }