public void PlayerStateUpdate() { lobbyManager.createLobby(4, "bob", 5, "no", (WebSocketSharp.WebSocket)null, "five"); LobbyInfoPacket lip = lobbyManager.joinLobby("testing", 1, "bob", "no"); Assert.That(lobbies["five"].players.Count == 2); }
public void PlayerJoinAlert() { lobbyManager.createLobby(4, "bob", 5, "no", (WebSocketSharp.WebSocket)null, "five"); LobbyInfoPacket lip = lobbyManager.joinLobby("testing", 1, "bob", "no"); Assert.That(lip.dataType == Packets.UPDATE); }
private void HandleLobbyInfoPacket(LobbyInfoPacket p) { // show on screen StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine($"Players Total: {p.ClientCount}"); stringBuilder.AppendLine($"Players InGame: {p.InGameCount}"); stringBuilder.AppendLine($"Rooms Total: {p.RoomCount}"); this.lobbyInfo.Text = stringBuilder.ToString(); }
public void BlockFreezeStateUpdate() { lobbyManager.createLobby(4, "bob", 5, "no", (WebSocketSharp.WebSocket)null, "five"); LobbyInfoPacket lip = lobbyManager.joinLobby("testing", 1, "bob", "no"); Packet packet = new Packet(); packet.data = "{'lobbyID': 'five'}"; packet.type = 2; lobbyManager.startGame(packet); PlayerInputPacket pip = new PlayerInputPacket(); pip.lobbyID = "five"; pip.move = "freeze"; int[][] indices = new int[][] { new int[] { 1, 2 } }; pip.shapeIndices = indices; UpdatePacket up = lobbyManager.processInput(pip); }
public void GameStateAlert() { lobbyManager.createLobby(4, "bob", 5, "no", (WebSocketSharp.WebSocket)null, "five"); LobbyInfoPacket lip = lobbyManager.joinLobby("testing", 1, "bob", "no"); Packet packet = new Packet(); packet.data = "{'lobbyID': 'five'}"; packet.type = 2; lobbyManager.startGame(packet); PlayerInputPacket pip = new PlayerInputPacket(); pip.lobbyID = "five"; pip.move = "left"; UpdatePacket up = lobbyManager.processInput(pip); Assert.That(up.move == "left"); }
public LobbyInfoPacket alertLobby(int playerID, string lobbyID, int type) { Console.WriteLine("checking for lobbyid " + lobbyID); LobbyInfoPacket lobbyInfoPacket = new LobbyInfoPacket(); Lobby lobby; if (lobbies.ContainsKey(lobbyID)) { lobby = lobbies[lobbyID]; for (int j = 0; j < lobby.players.Count; j++) { lobbyInfoPacket.players = lobby.players; lobbyInfoPacket.lobbyID = lobbyID; lobbyInfoPacket.maxPlayers = lobby.maxPlayers; lobbyInfoPacket.dataType = type; lobbyInfoPacket.numBots = lobby.botCount; try { Sessions.SendTo(JsonConvert.SerializeObject(lobbyInfoPacket), lobby.players[j].socketID); } catch (Exception) { // testing or invalid session } } return(lobbyInfoPacket); } else if (lobbyID == "testing") { lobby = lobbies["five"]; lobbyInfoPacket.players = lobby.players; lobbyInfoPacket.lobbyID = lobbyID; lobbyInfoPacket.maxPlayers = lobby.maxPlayers; lobbyInfoPacket.dataType = type; lobbyInfoPacket.numBots = lobby.botCount; return(lobbyInfoPacket); } else { Send("invalid ID"); return(lobbyInfoPacket); } }
public void OnPacket(byte[] data) { if (data.Length == 0) { return; } PACKET_TYPES type = Packet.GetType(data); if (type == PACKET_TYPES.LOBBY_INFO) { LobbyInfoPacket packet = Packet.Deserialize <LobbyInfoPacket>(data); if (packet.state == LobbyInfoPacket.State.LOBBY_CLOSED) { RequestNewState(new Game(_serverConnection)); } if (packet.state == LobbyInfoPacket.State.STARTING) { _statusText.DisplayedString = "Game is starting in " + packet.countdown + " seconds!"; } if (packet.state == LobbyInfoPacket.State.GAME_IN_PROGRESS) { _statusText.DisplayedString = "Game is currently in progress, please wait."; } if (packet.state == LobbyInfoPacket.State.WAITING_FOR_PLAYERS) { _statusText.DisplayedString = "Waiting for players..."; } _playerCountText.DisplayedString = "Players in lobby: " + packet.playerCount; } }
public LobbyInfoPacket joinLobby(string lobbyID, int playerID, string name, string socketID) { lobbyID = lobbyID.ToLower(); Lobby lobby; if (lobbies == null) { Console.WriteLine("lobbies is null"); } if (lobbies.ContainsKey(lobbyID)) { lobby = lobbies[lobbyID]; if (lobby.numPlayers < lobby.maxPlayers) { if (lobby.lobbyState == LobbyState.PLAYING && lobby.game.current_time > 5) { return((LobbyInfoPacket)null); } int newPlayerID = lobby.players.Count + 1; lobby.numPlayers += 1; Player newPlayer = new Player(newPlayerID, name, socketID, Context.WebSocket); lobby.players.Add(newPlayer); // send message to user of lobby id ConfirmationPacket confirmationPacket = new ConfirmationPacket(); confirmationPacket.lobbyID = lobbyID; confirmationPacket.playerID = newPlayerID; alertLobby(playerID, lobbyID, Packets.UPDATE); LobbyInfoPacket lobbyInfoPacket = new LobbyInfoPacket(); lobbyInfoPacket.lobbyID = lobby.id; lobbyInfoPacket.players = lobby.players; lobbyInfoPacket.lobbyID = lobbyID; lobbyInfoPacket.maxPlayers = lobby.maxPlayers; lobbyInfoPacket.dataType = Packets.UPDATE; lobbyInfoPacket.numBots = lobby.botCount; Send(JsonConvert.SerializeObject(lobbyInfoPacket)); Send(JsonConvert.SerializeObject(confirmationPacket, Formatting.Indented, new JsonSerializerSettings() { ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore })); return(lobbyInfoPacket); } else { if (lobby.botCount > 0 && lobby.lobbyState != LobbyState.PLAYING) { lobbies[lobbyID].botCount--; lobbies[lobbyID].numPlayers--; alertLobby(-2, lobbyID, Packets.REMOVE_BOT); joinLobby(lobbyID, playerID, name, socketID); } } } else if (lobbyID == "testing") { lobby = lobbies["five"]; lobby.players.Add(new Player(1, "bob", "no", (WebSocketSharp.WebSocket)null)); return(alertLobby(0, "testing", Packets.UPDATE)); } else { //send message invalid ID Send("bad"); } return(null); }