示例#1
0
        /// <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);
        }
示例#2
0
        /// <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;
            }
        }
示例#3
0
        /// <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);
                }
            }
        }