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; }
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); } }
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); } } }
public Mode(ModeMulti type) { this.type = type; this.red = 0; this.blue = 0; }