Пример #1
0
        protected async override void Run(ISession playerContext, C2S_UpLoadShipInfoReq message, Action <S2C_UpLoadShipInfoAck> reply)
        {
            GameServerPlayerContext gameServerPlayerContext = playerContext as GameServerPlayerContext;

            S2C_UpLoadShipInfoAck  response = new S2C_UpLoadShipInfoAck();
            GameServerDBPlayerShip shipInfo = new GameServerDBPlayerShip();

            shipInfo.shipId   = message.ShipId;
            shipInfo.shipName = message.ShipName;
            shipInfo.shipType = message.ShipType;
            shipInfo.weapon_a = message.WeaponA;
            shipInfo.weapon_b = message.WeaponB;
            var flag = await gameServerPlayerContext.UpLoadShipInfoToDB(shipInfo);

            if (flag)
            {
                response.State = S2C_UpLoadShipInfoAck.Types.State.Ok;
            }
            else
            {
                response.State = S2C_UpLoadShipInfoAck.Types.State.Fail;
            }

            reply(response);
        }
        protected override void Run(ISession playerContext, C2S_InvitePlayerMatchTeam message)
        {
            GameServerPlayerContext context = playerContext as GameServerPlayerContext;

            GameServer.Instance.PlayerCtxManager.SendSingleLocalMessage(new SystemSendNetMessage {
                PlayerId = message.AimPlayerId, Message = new S2C_InvitePlayerMatchTeam {
                    LaunchPlayerId = message.LaunchPlayerId, MatchTeamId = message.MatchTeamId
                }
            }, message.AimPlayerId);
        }
        protected override void Run(ISession playerContext, C2S_ExitMatchQueue message)
        {
            GameServerPlayerContext context = playerContext as GameServerPlayerContext;

            if (!context.IsAvaliable())
            {
                return;
            }
            ExitMatchQueueMessage lm = new ExitMatchQueueMessage {
                playerId = message.LaunchPlayerId, teamId = message.MatchTeamId
            };

            GameServer.Instance.PostMessageToSystem <GameMatchSystem>(lm);
        }
Пример #4
0
        protected async override void Run(ISession playerContext, C2S_ShipInfoReq message, Action <S2C_ShipInfoAck> reply)
        {
            GameServerPlayerContext gameServerPlayerContext = playerContext as GameServerPlayerContext;
            S2C_ShipInfoAck         response = new S2C_ShipInfoAck();
            var ship = await gameServerPlayerContext.GetCurrentShipInfoFormDB();

            if (ship != null)
            {
                response.ShipId   = ship.shipId;
                response.ShipType = ship.shipType;
                response.ShipName = ship.shipName;
                response.WeaponA  = ship.weapon_a;
                response.WeaponB  = ship.weapon_b;
                reply(response);
            }
        }
        protected override void Run(ISession playerContext, C2S_JoinMatchTeam message)
        {
            Log.Info(message.ToJson());
            GameServerPlayerContext context = playerContext as GameServerPlayerContext;

            if (context.ContextStringName != message.LaunchPlayerId)
            {
                Log.Debug("发起人和退出玩家不一致,不能执行逻辑");
                return;
            }
            var lm = new JoinMatchTeamMessage();

            lm.playerId = message.LaunchPlayerId;
            lm.teamId   = message.MatchTeamId;

            GameServer.Instance.PostMessageToSystem <GameMatchSystem>(lm);
        }
Пример #6
0
        protected override void Run(ISession playerContext, C2S_UpdateOnlinePlayerList message, Action <S2C_UpdateOnlinePlayerList> reply)
        {
            GameServerPlayerContext gameServerPlayerContext = playerContext as GameServerPlayerContext;

            if (gameServerPlayerContext == null)
            {
                return;
            }

            //1 根据PlayerManager获取在线玩家集合
            var           playerContexts = GameServer.Instance.PlayerCtxManager.GetRegisteredByStringPlayerList();
            List <string> players        = new List <string>();

            foreach (var playerId in playerContexts)
            {
                players.Add(playerId.Key);
            }
            //2 封装消息发送给matchSystem
            var lm = new UpdateOnlinePlayerMessage {
                playerId = message.LaunchPlayerId, players = players, reply = reply
            };

            GameServer.Instance.PostMessageToSystem <GameMatchSystem>(lm);
        }