Exemple #1
0
        public Server(int port, string mapName, string name, ModeMulti mode)
        {
            this.name    = name;
            this.mapName = mapName;
            this.port    = port;
            clientList   = new List <Client>();

            this.mode = new Mode(mode);

            config      = new NetPeerConfiguration("TDZsrv");
            config.Port = port;
            config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
            config.EnableMessageType(NetIncomingMessageType.Data);

            server = new NetServer(config);
            server.Start();

            Thread.Sleep(500);

            map = new Map();

            map.Load(mapName + ".xml");

            serverListener = new Thread(new ThreadStart(Listener));
            serverListener.Start();
        }
 public ServerInfo(String name, String mapName, int port, int nbPlayers, ModeMulti mode)
 {
     this.name      = name;
     this.mapName   = mapName;
     this.port      = port;
     this.nbPlayers = nbPlayers;
     this.mode      = mode;
 }
Exemple #3
0
        private void Listener()
        {
            while (request != "/quit")
            {
                NetIncomingMessage incMsg;

                while ((incMsg = server.ReadMessage()) != null)
                {
                    switch (incMsg.MessageType)
                    {
                    case NetIncomingMessageType.ConnectionApproval:
                        incMsg.SenderConnection.Approve();
                        NetOutgoingMessage outMsg = server.CreateMessage();
                        //
                        if (incMsg.ReadInt32() == (int)requestType.create)
                        {
                            String    srvname = incMsg.ReadString();
                            String    mapname = incMsg.ReadString();
                            ModeMulti mode    = (ModeMulti)incMsg.ReadInt32();
                            //
                            currentPort++;
                            outMsg.Write(currentPort);
                            //
                            Console.WriteLine("Request for create new game server from : " + incMsg.SenderEndpoint.ToString());
                            //
                            Server srv = new Server(currentPort, mapname, srvname, mode);
                            servers.Add(srv);
                            //
                            Thread.Sleep(1000);
                        }
                        else
                        {
                            outMsg.Write(servers.Count);
                            foreach (Server srv in servers)
                            {
                                outMsg.Write(srv.name);
                                outMsg.Write(srv.mapName);
                                outMsg.Write(srv.port);
                                outMsg.Write(srv.NumOfPlayer);
                                outMsg.Write((Int32)srv.mode.type);
                            }
                        }
                        server.SendMessage(outMsg, incMsg.SenderConnection, NetDeliveryMethod.ReliableOrdered);
                        break;

                    default:
                        break;
                    }
                    server.Recycle(incMsg);
                }
                Thread.Sleep(1);
            }
        }
Exemple #4
0
        public Client(String host, int port, ref int hostPlayer, Map map, ContentManager Content, ModeMulti mode)
        {
            this.mode = mode;

            config = new NetPeerConfiguration("TDZsrv");
            client = new NetClient(config);
            client.Start();

            NetOutgoingMessage approv = client.CreateMessage();

            approv.Write(hostPlayer);
            client.Connect(host, port, approv);

            Thread.Sleep(500);

            NetIncomingMessage incMsg;

            bool haveID = false;

            while (!haveID)
            {
                incMsg = client.ReadMessage();
                if (incMsg != null && incMsg.MessageType == NetIncomingMessageType.Data)
                {
                    hostPlayer = incMsg.ReadInt32();
                    Console.WriteLine("Connection Ok");
                    Console.WriteLine("Read Map");

                    //Get Map FileName
                    String filename = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/TDZ/Map/Multi/" + incMsg.ReadString();

                    //Init a new Map
                    map.Load(filename + ".xml", Content);

                    for (int i = 0; i < map.height; i++)
                    {
                        for (int j = 0; j < map.width; j++)
                        {
                            map.world[i, j].lifePoint = incMsg.ReadInt32();
                            map.world[i, j].alive     = incMsg.ReadBoolean();
                            map.world[i, j].bloque    = incMsg.ReadBoolean();
                            map.world[i, j].draw      = incMsg.ReadBoolean();
                            map.world[i, j].hitable   = incMsg.ReadBoolean();
                        }
                    }

                    Console.WriteLine("Map is loaded");
                    haveID = true;
                }
            }
        }
        public ConnectMaster(requestType request, String name, String mapname, ModeMulti mode)
        {
            serversConnected = new List <ServerInfo>();

            config = new NetPeerConfiguration("TDZmaster");
            client = new NetClient(config);
            client.Start();

            NetOutgoingMessage requestSrv = client.CreateMessage();

            requestSrv.Write((Int32)request);

            if (request == requestType.create)
            {
                requestSrv.Write(name);
                String tmp = mapname.Replace(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/TDZ/Map/Multi/", "");
                requestSrv.Write(tmp);
                requestSrv.Write((Int32)mode);
            }

            client.Connect(MasterIPAdress, 4242, requestSrv);
            Thread.Sleep(1000);

            NetIncomingMessage incMsg;
            bool haveDatas = false;

            while (!haveDatas)
            {
                incMsg = client.ReadMessage();
                if (incMsg != null && incMsg.MessageType == NetIncomingMessageType.Data)
                {
                    if (request == requestType.create)
                    {
                        serverCreated = new ServerInfo(name, mapname, incMsg.ReadInt32(), 0, mode);
                    }
                    else
                    {
                        int count = incMsg.ReadInt32();
                        for (int i = 0; i < count; i++)
                        {
                            serversConnected.Add(new ServerInfo(incMsg.ReadString(), incMsg.ReadString(), incMsg.ReadInt32(), incMsg.ReadInt32(), (ModeMulti)incMsg.ReadInt32()));
                        }
                    }
                    haveDatas = true;
                    client.Recycle(incMsg);
                }
            }
        }
Exemple #6
0
 public Mode(ModeMulti type)
 {
     this.type = type;
     this.red  = 0;
     this.blue = 0;
 }