/// <summary> /// Envoie la liste des joueurs au nouveau joueur /// </summary> /// <param name="ps">La signature d'un joueur connecté</param> /// <param name="inc">Le message entrant</param> public void SendPlayerListToNewPlayer(PlayerSignature ps, NetIncomingMessage inc) { NetOutgoingMessage outmsg = GameServer.CreateMessage(); SendNewPlayerNotification msg = new SendNewPlayerNotification(ps.Pseudo, ps.ID, ps.Team, ps.Weapon); msg.EncodeMessage(outmsg); GameServer.SendMessage(outmsg, inc.SenderConnection, NetDeliveryMethod.ReliableOrdered); }
/// <summary> /// Procédure appelée quand un message de type Data est reçu ; /// elle trie les messages selon leur type et les traite. /// </summary> /// <param name="inc">Le message entrant</param> public void TreatServerMessage(NetIncomingMessage inc) { ServerMessageTypes messageType = (ServerMessageTypes)inc.ReadByte(); switch (messageType) { case ServerMessageTypes.SendMapSeed: MapSeed = inc.ReadInt32(); break; case ServerMessageTypes.SendPlayerData: RecievedPlayerData = new PlayerDataServer(); RecievedPlayerData.DecodeMessage(inc); break; case ServerMessageTypes.SendNewPlayerNotification: SendNewPlayerNotification nplayer = new SendNewPlayerNotification(); nplayer.DecodeMessage(inc); AddNewPlayer(nplayer.PlayerID, nplayer.Pseudo, nplayer.TeamNumber, nplayer.Weapon); break; case ServerMessageTypes.ConfirmArrival: IsConnected = true; break; case ServerMessageTypes.NewBulletServer: AddNewBullet(inc.ReadInt64(), inc.ReadFloat()); break; case ServerMessageTypes.PlayerRespawn: RespawnPlayer(inc.ReadInt64()); break; case ServerMessageTypes.Death: KillPlayer(inc.ReadInt64()); break; case ServerMessageTypes.Disconnection: PlayerDisconnect msg = new PlayerDisconnect(); msg.DecodeMessage(inc); GamePage.PlayerList.RemoveAll(x => x.Id == msg.ID); GamePage.PlayersToDraw.RemoveAll(x => x.Id == msg.ID); foreach (Team team in Team.TeamList) { team.TeamPlayerList.RemoveAll(x => x.Id == msg.ID); } break; default: break; } }
/// <summary> /// Envoie un message de nouveau joueur à tous les autres joueurs /// </summary> /// <param name="inc">Le message entrant</param> /// <param name="pseudo">Le pseudo du joueur</param> /// <param name="ID">L'ID du joueur</param> /// <param name="teamNumber">Le numéro d'équipe du joueur</param> /// <param name="weapon">L'arme du joueur</param> public void SendNewPlayerMessage(NetIncomingMessage inc, string pseudo, long ID, int teamNumber, string weapon) { //System.Diagnostics.Debug.WriteLine("[SERVER] NEW PLAYER DETECTED"); SendNewPlayerNotification msg = new SendNewPlayerNotification(pseudo, ID, teamNumber, weapon); foreach (NetConnection c in GameServer.Connections) { if (c != inc.SenderConnection) { NetOutgoingMessage outmsg = GameServer.CreateMessage(); msg.EncodeMessage(outmsg); GameServer.SendMessage(outmsg, c, NetDeliveryMethod.ReliableOrdered); } } }