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); }
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); }
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); }