Beispiel #1
0
        /// <summary>
        /// Envoie une notification de la mort du joueur au serveur
        /// </summary>
        /// <param name="ID">L'ID du joueur</param>
        public void SendDeathMessage(long ID)
        {
            NetOutgoingMessage outmsg = GameClient.CreateMessage();
            PlayerDeathGame    msg    = new PlayerDeathGame(ID);

            msg.EncodeMessage(outmsg);
            GameClient.SendMessage(outmsg, NetDeliveryMethod.ReliableOrdered);
        }
Beispiel #2
0
        /// <summary>
        /// Procédure qui traite les messages de type Data venant des client
        /// </summary>
        /// <param name="inc">Le message entrant</param>
        public void TreatGameMessages(NetIncomingMessage inc)
        {
            GameMessageTypes   messagetype = (GameMessageTypes)inc.ReadByte();
            NetOutgoingMessage outmsg      = GameServer.CreateMessage();

            switch (messagetype)
            {
            case GameMessageTypes.GetMapSeed:
                NetOutgoingMessage outmsg1     = GameServer.CreateMessage();
                SendMapSeed        sendmapseed = new SendMapSeed(GameSeed);
                sendmapseed.EncodeMessage(outmsg1);
                NetSendResult res = GameServer.SendMessage(outmsg1, inc.SenderConnection, NetDeliveryMethod.ReliableOrdered);

                break;

            case GameMessageTypes.SendPlayerData:
                PlayerDataGame playerdatagame = new PlayerDataGame();
                playerdatagame.DecodeMessage(inc);
                PlayerDataServer playerdataserver = new PlayerDataServer();
                playerdataserver.TransferData(playerdatagame);
                foreach (NetConnection co in GameServer.Connections)
                {
                    if (co != inc.SenderConnection)
                    {
                        NetOutgoingMessage outmsg2 = GameServer.CreateMessage();
                        playerdataserver.EncodeMessage(outmsg2);
                        GameServer.SendMessage(outmsg2, co, NetDeliveryMethod.ReliableOrdered);
                    }
                }
                break;

            case GameMessageTypes.SendArrival:
                NetOutgoingMessage outmsg3 = GameServer.CreateMessage();
                SendArrival        msg     = new SendArrival();
                msg.DecodeMessage(inc);
                if (PlayerList.Count > 0)
                {
                    foreach (PlayerSignature ps in PlayerList)
                    {
                        SendPlayerListToNewPlayer(ps, inc);
                    }
                }
                AddNewPlayerToList(msg.Pseudo, msg.TeamNumber, msg.ID, msg.Weapon, inc.SenderConnection);
                SendNewPlayerMessage(inc, msg.Pseudo, msg.ID, msg.TeamNumber, msg.Weapon);
                outmsg3 = GameServer.CreateMessage();
                ConfirmArrival nmsg = new ConfirmArrival();
                nmsg.EncodeMessage(outmsg3);
                GameServer.SendMessage(outmsg3, inc.SenderConnection, NetDeliveryMethod.ReliableOrdered);
                break;

            case GameMessageTypes.NewBulletGame:
                NewBulletGame nbmsg = new NewBulletGame();
                nbmsg.DecodeMessage(inc);
                NewBulletServer nbmsg2 = new NewBulletServer();
                nbmsg2.TransferData(nbmsg);
                foreach (NetConnection co in GameServer.Connections)
                {
                    if (co != inc.SenderConnection)
                    {
                        NetOutgoingMessage outmsg4 = GameServer.CreateMessage();
                        nbmsg2.EncodeMessage(outmsg4);
                        GameServer.SendMessage(outmsg4, co, NetDeliveryMethod.ReliableOrdered);
                    }
                }
                break;

            case GameMessageTypes.SendPlayerRespawn:
                RespawnPlayerGame prmsg = new RespawnPlayerGame();
                prmsg.DecodeMessage(inc);
                RespawnPlayerServer prmsg2 = new RespawnPlayerServer();
                prmsg2.TransferData(prmsg);
                foreach (NetConnection co in GameServer.Connections)
                {
                    if (co != inc.SenderConnection)
                    {
                        NetOutgoingMessage outmsg5 = GameServer.CreateMessage();
                        prmsg2.EncodeMessage(outmsg5);
                        GameServer.SendMessage(outmsg5, co, NetDeliveryMethod.ReliableOrdered);
                    }
                }
                break;

            case GameMessageTypes.SendDeath:
                PlayerDeathGame pdmsg = new PlayerDeathGame();
                pdmsg.DecodeMessage(inc);
                PlayerDeathServer pdmsg2 = new PlayerDeathServer();
                pdmsg2.TransferData(pdmsg);
                foreach (NetConnection co in GameServer.Connections)
                {
                    if (co != inc.SenderConnection)
                    {
                        NetOutgoingMessage outmsg6 = GameServer.CreateMessage();
                        pdmsg2.EncodeMessage(outmsg6);
                        GameServer.SendMessage(outmsg6, co, NetDeliveryMethod.ReliableOrdered);
                    }
                }
                break;

            case GameMessageTypes.SendDisconnection:
                SendDisconnectionMessage(inc.ReadInt64(), inc);
                break;

            default:
                break;
            }
        }