public void HandleMessage(RegisteredGames message) { if (message.GameInfo == null || message.GameInfo.Length == 0 || !message.GameInfo.Where(g => g.gameName == Player.Options.GameName).Any()) { Task.Run(() => { Thread.Sleep((int)Player.Settings.RetryJoinGameInterval); string xmlMessage = XmlMessageConverter.ToXml(new GetGames()); Player.Send(xmlMessage); }); } else { ConsoleDebug.Good("Games available"); if (Player.Options.GameName == null) { ConsoleDebug.Warning("Game name not specified"); return; } if (message.GameInfo.Count(info => info.gameName == Player.Options.GameName) == 1) { string xmlMessage = XmlMessageConverter.ToXml(new JoinGame() { gameName = Player.Options.GameName, playerIdSpecified = false, preferredRole = Player.Options?.PreferredRole == "player" ? PlayerType.member : PlayerType.leader, preferredTeam = Player.Options?.PreferredTeam == "red" ? Common.Schema.TeamColour.red : Common.Schema.TeamColour.blue }); Player.Send(xmlMessage); } } }
public void RegisteredGamesTest() { RegisteredGames registeredGames = new RegisteredGames(); GameInfo[] gameInfoTab = new GameInfo[3]; gameInfoTab[0] = new GameInfo() { gameName = "testname" }; registeredGames.GameInfo = gameInfoTab; string xml = XmlMessageConverter.ToXml(registeredGames); RegisteredGames result = (RegisteredGames)XmlMessageConverter.ToObject(xml); Assert.AreEqual("testname", result.GameInfo[0].gameName); }
static void Main(string[] args) { JoinGame newJoin = new JoinGame(1, Role.leader, Team.red); string information = newJoin.messageIntoXML(newJoin); Console.Write(information); Console.WriteLine(); Console.WriteLine(); List <GameInfo> newList = new List <GameInfo>(); newList.Add(new GameInfo(1, 5, 5)); newList.Add(new GameInfo(2, 10, 10)); newList.Add(new GameInfo(3, 3, 3)); newList.Add(new GameInfo(4, 2, 8)); RegisteredGames reg = new RegisteredGames(newList); Console.Write(reg.messageIntoXML(reg)); Console.WriteLine(); Console.WriteLine(); Player newPlayer = new Player(23, Team.red, Role.member); ConfirmJoiningGame confirmation = new ConfirmJoiningGame(1, 23, "blablalbla", newPlayer); Console.Write(confirmation.messageIntoXML(confirmation)); Console.WriteLine(); Console.WriteLine(); Message tempMessage = xmlToMessage(information); Type typer = tempMessage.GetType(); dynamic newMessage = Convert.ChangeType(tempMessage, typer); Console.Write("Game ID: " + newMessage.gameID + " and role: " + newMessage.preferredRole + " and team: " + newMessage.preferredTeam); Console.WriteLine("Press any key to exit."); Console.ReadKey(); }
public static void HandleMessage(GetGames request, CommunicationServer server, Socket handler) { List <GameInfo> gi = new List <GameInfo>(); foreach (var game in server.RegisteredGames) { if (game.HasStarted) { continue; } gi.Add(new GameInfo() { blueTeamPlayers = game.BlueTeamPlayersCount, redTeamPlayers = game.RedTeamPlayersCount, gameName = game.Name }); } var rg = new RegisteredGames() { GameInfo = gi.ToArray() }; server.ConnectionEndpoint.SendFromServer(handler, XmlMessageConverter.ToXml(rg)); }
public static void DataManager(string xml, ClientData client) { Message temp = Message.xmlIntoMessage(xml); dynamic msg = Convert.ChangeType(temp, temp.GetType()); switch (typeDict[msg.GetType()]) { case 0: break; case 1: foreach (ClientData c in clients) { if (c.id == msg.playerID) { string confirmJoining = Message.messageIntoXML(msg); byte[] sendConfirmJoining = Encoding.ASCII.GetBytes(confirmJoining); c.clientSocket.Send(sendConfirmJoining); } } break; case 2: foreach (ClientData c in clients) { if (c.id == msg.playerID) { string reject = Message.messageIntoXML(msg); byte[] sendReject = Encoding.ASCII.GetBytes(reject); c.clientSocket.Send(sendReject); } } break; case 3: client.id = counter; msg.playerID = counter; counter++; string join = Message.messageIntoXML(msg); byte[] sendJoin = Encoding.ASCII.GetBytes(join); try { gmSocket.Send(sendJoin); } catch (Exception e) { Console.Write(e); } break; case 4: string game = Message.messageIntoXML(msg); byte[] sendGame = Encoding.ASCII.GetBytes(game); Console.WriteLine(); foreach (ClientData c in clients) { if (c.id == msg.playerID) { Console.WriteLine("Received GameMessage! Sending to playerID: {0}", msg.playerID); c.clientSocket.Send(sendGame); } } break; case 5: GameInfo info = new GameInfo(msg.gameID, msg.blueTeamPlayers, msg.redTeamPlayers); gameList.Add(info); int id = msg.gameID; gmID = counter; client.id = counter; gmSocket = client.clientSocket; counter++; ConfirmGameRegistration confirmation = new ConfirmGameRegistration(id); string conf = Message.messageIntoXML(confirmation); byte[] toSend = Encoding.ASCII.GetBytes(conf); client.clientSocket.Send(toSend); break; case 6: RegisteredGames registered = new RegisteredGames(gameList); string registeredSend = Message.messageIntoXML(registered); byte[] registeredToSend = Encoding.ASCII.GetBytes(registeredSend); client.clientSocket.Send(registeredToSend); break; case 8: string move = Message.messageIntoXML(msg); byte[] sendMove = Encoding.ASCII.GetBytes(move); try { gmSocket.Send(sendMove); } catch (Exception e) { Console.Write(e); } break; case 9: Console.WriteLine("Response from GM"); foreach (ClientData c in clients) { if (c.id == msg.playerID) { string movementResponse = Message.messageIntoXML(msg); byte[] sendmovementResponse = Encoding.ASCII.GetBytes(movementResponse); c.clientSocket.Send(sendmovementResponse); } } break; default: Console.Write("dostalem cos"); byte[] sendEmpty = Encoding.ASCII.GetBytes(""); client.clientSocket.Send(sendEmpty); break; } }