Exemplo n.º 1
0
        public void HandleWeaponFire(Contexts contexts, PlayerEntity player, NewWeaponConfigItem weapon)
        {
            if (!this.args.Triggers.IsEmpty(FreeTriggerConstant.WEAPON_FIRE))
            {
                SimpleParaList dama = new SimpleParaList();
                dama.AddFields(new ObjectFields(weapon));
                SimpleParable sp = new SimpleParable(dama);
                args.TempUse("weapon", sp);
                args.TempUse("current", (FreeData)player.freeData.FreeData);

                this.args.Triggers.Trigger(FreeTriggerConstant.WEAPON_FIRE, args);

                args.Resume("weapon");
                args.Resume("current");
            }
        }
Exemplo n.º 2
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.º 3
0
        public void SetGameMode(int mode, int mapId)
        {
            ContextsWrapper.contexts.session.serverSessionObjects.GameRule = mode;
            ContextsWrapper.RoomInfo.ModeId = mode;
            ContextsWrapper.RoomInfo.MapId  = mapId;
            FreeRuleEventArgs args = new FreeRuleEventArgs(ContextsWrapper.contexts);

            ContextsWrapper.FreeArgs = args;
            rule = new FreeGameRule(this);


            SimpleParaList spl = (SimpleParaList)args.GetDefault().GetParameters();

            spl.AddFields(new ObjectFields(ContextsWrapper.RoomInfo));
            spl.AddPara(new BoolPara("hxMode", SharedConfig.IsHXMod));
            spl.AddPara(new StringPara("version", FreeRuleConfig.GetVersion()));
        }
Exemplo n.º 4
0
        public FreeEntityData(FreeMoveEntity entity)
        {
            this._entity = entity;
            this.paras   = new SimpleParaList();
            this.paras.AddFields(new ObjectFields(this));
            this.id = entity.entityKey.Value.EntityId;

            this.follows = new List <PlayerEntity>();

            xPara = new IntPara("x", 0);
            yPara = new IntPara("y", 0);
            zPara = new IntPara("z", 0);

            paras.AddPara(xPara);
            paras.AddPara(yPara);
            paras.AddPara(zPara);
        }
Exemplo n.º 5
0
        public void SetGameMode(int mode)
        {
            _contexts.session.serverSessionObjects.GameRule = mode;
            _contexts.session.commonSession.RoomInfo.ModeId = mode;
            FreeRuleEventArgs args = new FreeRuleEventArgs(_contexts);

            _contexts.session.commonSession.FreeArgs = args;

            _rule = new FreeGameRule(this);

            RoomInfo info = _contexts.session.commonSession.RoomInfo;


            SimpleParaList spl = (SimpleParaList)args.GetDefault().GetParameters();

            spl.AddFields(new ObjectFields(info));
        }
Exemplo n.º 6
0
        protected void PlayerReportTrigger(GameOverPlayer gameOverPlayer, IPlayerInfo playerInfo, IFreeArgs freeArgs)
        {
            SimpleParable  unit = new SimpleParable();
            SimpleParaList list = new SimpleParaList();

            unit.SetList(list);
            list.AddFields(new ObjectFields(gameOverPlayer));
            list.AddFields(new ObjectFields(_dictGoPlayers));
            list.AddFields(new ObjectFields(_dictPlayers));
            list.AddFields(new ObjectFields(_dictLeavedPlayers));
            IEventArgs args = freeArgs as IEventArgs;

            if (null != args)
            {
                var playerEntity = playerInfo.PlayerEntity as PlayerEntity;
                args.Trigger(FreeTriggerConstant.PLAYER_REPORT, new TempUnit("report", unit),
                             new TempUnit("current", (FreeData)playerEntity.freeData.FreeData));
            }
        }
Exemplo n.º 7
0
        //TODO 找到调用的位置,确认逻辑行为
        public void HandleWeaponState(Contexts contexts, PlayerEntity player)
        {
            if (!this.args.Triggers.IsEmpty(FreeTriggerConstant.WEAPON_STATE))
            {
                SimpleParaList dama = new SimpleParaList();
                //dama.AddFields(new ObjectFields(state));
                //dama.AddPara(new IntPara("CarryClip", state.ReservedBulletCount));
                //dama.AddPara(new IntPara("Clip", state.LoadedBulletCount));
                ////dama.AddPara(new IntPara("ClipType", (int)state.Caliber));
                //dama.AddPara(new IntPara("id", (int)state.CurrentWeapon));
                SimpleParable sp = new SimpleParable(dama);
                args.TempUse("state", sp);
                args.TempUse("current", (FreeData)player.freeData.FreeData);

                this.args.Triggers.Trigger(FreeTriggerConstant.WEAPON_STATE, args);

                args.Resume("state");
                args.Resume("current");
            }
        }
Exemplo n.º 8
0
        public float HandleDamage(PlayerEntity source, PlayerEntity target, PlayerDamageInfo damage)
        {
            if (damagePara == null)
            {
                damagePara = new FloatPara("damage", damage.damage);
            }

            damagePara.SetValue(Math.Min(damage.damage, target.gamePlay.CurModeHp));

            if (!this.args.Triggers.IsEmpty(FreeTriggerConstant.DAMAGE))
            {
                if (source != null)
                {
                    args.TempUse("source", (FreeData)source.freeData.FreeData);
                }
                args.TempUse("target", (FreeData)target.freeData.FreeData);

                SimpleParaList dama = new SimpleParaList();
                dama.AddFields(new ObjectFields(damage));
                SimpleParable sp = new SimpleParable(dama);
                args.TempUse("damage", sp);

                args.TempUsePara(damagePara);

                this.args.Triggers.Trigger(FreeTriggerConstant.DAMAGE, args);

                if (source != null)
                {
                    args.Resume("source");
                }

                args.Resume("target");
                args.Resume("damage");
                args.ResumePara("damage");
            }


            return((float)damagePara.GetValue());
        }
Exemplo n.º 9
0
        public override void DoAction(IEventArgs args)
        {
            var msg = GameOverMessage.Allocate();

            msg.HallRoomId = args.GameContext.session.commonSession.RoomInfo.HallRoomId;

            FreeGameRule rule = (FreeGameRule)args.Rule;

            foreach (PlayerEntity player in args.GameContext.player.GetInitializedPlayerEntities())
            {
                SimpleParable  sp    = new SimpleParable();
                SimpleParaList paras = new SimpleParaList();
                sp.SetList(paras);

                var gameOverPlayer = GameOverPlayer.Allocate();

                paras.AddFields(new ObjectFields(gameOverPlayer));
                gameOverPlayer.Id = player.playerInfo.PlayerId;

                args.Act(action, new TempUnit[] { new TempUnit("basic", sp) });
            }
        }
Exemplo n.º 10
0
        public void HandleWeaponState(Contexts contexts, PlayerEntity player, int weaponId)
        {
            if (!args.Triggers.IsEmpty(FreeTriggerConstant.WEAPON_STATE))
            {
                SimpleParaList dama = new SimpleParaList();
                dama.AddFields(new ObjectFields(player));

                /*var weaponData = player.WeaponController().HeldWeaponAgent.ComponentScan;
                 * if (!weaponData.IsSafeVailed)
                 *  return;
                 * dama.AddPara(new IntPara("CarryClip", player.WeaponController().GetReservedBullet()));
                 * dama.AddPara(new IntPara("Clip", weaponData.Bullet));
                 * var config = SingletonManager.Get<WeaponResourceConfigManager>().GetConfigById(weaponData.ConfigId);
                 * dama.AddPara(new IntPara("ClipType", null == config ? 0 : config.Caliber));*/
                dama.AddPara(new IntPara("id", weaponId));
                SimpleParable sp = new SimpleParable(dama);
                args.TempUse("state", sp);
                args.TempUse("current", (FreeData)player.freeData.FreeData);
                args.Trigger(FreeTriggerConstant.WEAPON_STATE, new TempUnit("state", sp), new TempUnit("current", (FreeData)(player).freeData.FreeData));
                args.Resume("state");
                args.Resume("current");

                /*SimpleParaList dama = new SimpleParaList();
                 * //dama.AddFields(new ObjectFields(state));
                 * //dama.AddPara(new IntPara("CarryClip", state.ReservedBulletCount));
                 * //dama.AddPara(new IntPara("Clip", state.LoadedBulletCount));
                 * ////dama.AddPara(new IntPara("ClipType", (int)state.Caliber));
                 * //dama.AddPara(new IntPara("id", (int)state.CurrentWeapon));
                 * SimpleParable sp = new SimpleParable(dama);
                 * args.TempUse("state", sp);
                 * args.TempUse("current", (FreeData)player.freeData.FreeData);
                 *
                 * this.args.Triggers.Trigger(FreeTriggerConstant.WEAPON_STATE, args);
                 *
                 * args.Resume("state");
                 * args.Resume("current");*/
            }
        }
Exemplo n.º 11
0
        private void StartFlying(PlayerEntity playerEntity, ThrowingEntity throwingEntity)
        {
            var     dir = BulletDirUtility.GetThrowingDir(playerEntity.WeaponController());
            Vector3 vel = dir * throwingEntity.throwingData.InitVelocity;
            Vector3 pos = PlayerEntityUtility.GetThrowingEmitPosition(playerEntity.WeaponController());

            throwingEntity.position.Value        = pos;
            throwingEntity.throwingData.Velocity = vel;
            throwingEntity.throwingData.IsFly    = true;

            if (SharedConfig.IsServer)
            {
                IEventArgs args = (IEventArgs)_contexts.session.commonSession.FreeArgs;

                if (!args.Triggers.IsEmpty((int)EGameEvent.WeaponState))
                {
                    SimpleParaList dama = new SimpleParaList();
                    //TODO 确认逻辑
                    dama.AddFields(new ObjectFields(playerEntity));
                    var weaponData = playerEntity.WeaponController().HeldWeaponAgent.ComponentScan;
                    if (!weaponData.IsSafeVailed)
                    {
                        return;
                    }
                    dama.AddPara(new IntPara("CarryClip", playerEntity.WeaponController().GetReservedBullet()));
                    dama.AddPara(new IntPara("Clip", weaponData.Bullet));
                    var config = SingletonManager.Get <WeaponResourceConfigManager>().GetConfigById(weaponData.ConfigId);
                    dama.AddPara(new IntPara("ClipType", null == config ? 0 : config.Caliber));
                    dama.AddPara(new IntPara("id", weaponData.ConfigId));
                    SimpleParable sp = new SimpleParable(dama);

                    args.Trigger((int)EGameEvent.WeaponState, new TempUnit("state", sp), new TempUnit("current", (FreeData)(playerEntity).freeData.FreeData));
                }
            }

            //清理状态
            CastGrenade(_contexts, playerEntity);
        }
Exemplo n.º 12
0
        public FreeGameRule(ServerRoom room)
        {
            this.args   = (FreeRuleEventArgs)room.RoomContexts.session.commonSession.FreeArgs;
            this.mapId  = room.RoomContexts.session.commonSession.RoomInfo.MapId;
            this.ruleId = room.RoomContexts.session.commonSession.RoomInfo.ModeId;

            this.Room = room;

            RandomUtil.SetSeed(RandomUtil.Random(1, 10000000));

            SendMessageAction.sender = new FreeMessageSender();

            try
            {
                string         rule   = RuleMap.GetRuleName(ruleId);
                FreeRuleConfig config = FreeRuleConfig.GetRule(rule, SingletonManager.Get <ServerFileSystemConfigManager>().BootConfig.Mysql);
                args.Triggers.Merge(config.Triggers);
                args.ComponentMap = config.GameComponentMap;
                args.AddDefault(this);
                args.Functions.Merge(config.Functions);
                args.rule = this;
                args.FreeContext.TestCase.Merge(config.Triggers);

                AddCommonTrigger();
            }
            catch (Exception e)
            {
                Debug.LogError("加载模式" + RuleMap.GetRuleName(ruleId) + "失败.\n" + e.Message);
                _logger.Error("加载模式" + RuleMap.GetRuleName(ruleId) + "失败.\n", e);
            }

            this.paras = new SimpleParaList();
            paras.AddFields(new ObjectFields(this));

            this.paras.AddPara(new IntPara(StatePara, 0));
            this.paras.AddPara(new IntPara(EnterPara, 0));
        }
Exemplo n.º 13
0
 public ObjectUnit(object obj)
 {
     this.obj = obj;
     list     = new SimpleParaList();
     list.AddFields(new ObjectFields(obj));
 }