private void ProcessMessage(BADNetworkMessage networkMessage) { if (networkMessage._opCode == "CONNECTED") { Debug.Log("Connection to server confirmed."); Startup.GameStatus = "CONNECTED"; } else if (networkMessage._opCode == "START") { Debug.Log("Game has started."); Startup.GameStatus = "STARTED"; } else if (networkMessage._opCode == "WIN") { Debug.Log("Winner"); GameEnded("GAME OVER - WINNER"); } else if (networkMessage._opCode == "LOSE") { Debug.Log("Loser"); GameEnded("GAME OVER - YOU LOST"); } else { Debug.LogWarning("Unknown message type received."); } _statusText.text = Startup.GameStatus; }
private void CheckForGameOver(int fromConnectionId) { if (GameSessionState != GameOverState) { GameSessionState = GameOverState; foreach (KeyValuePair <int, string> playerSession in _playerSessions) { // send out the win/lose status to all players BADNetworkMessage responseMessage; if (playerSession.Key == fromConnectionId) { responseMessage = new BADNetworkMessage("WIN", playerSession.Value); } else { responseMessage = new BADNetworkMessage("LOSE", playerSession.Value); } SendMessage(playerSession.Key, responseMessage); _gameLiftServer.RemovePlayerSession(playerSession.Value); // player session id _server.Disconnect(playerSession.Key); } Debug.Log($"Ending game, player with connection Id {fromConnectionId} hit W first."); _gameLiftServer.HandleGameEnd(); } else { Debug.Log("CheckForGameOver: Game over already being processed."); } }
public void Send(BADNetworkMessage networkMessage) { var data = JsonConvert.SerializeObject(networkMessage); var encoded = Encoding.UTF8.GetBytes(data); var buffer = new ArraySegment <Byte>(encoded, 0, encoded.Length); Debug.Log("send message"); _client.Send(buffer); }
public void SendMessage(int connectionId, BADNetworkMessage networkMessage) { var data = JsonConvert.SerializeObject(networkMessage); var encoded = Encoding.UTF8.GetBytes(data); var asWriteBuffer = new ArraySegment <Byte>(encoded, 0, encoded.Length); Debug.Log("send message to playerSessionId: " + networkMessage._playerSessionId + ", with connId: " + connectionId); _server.Send(connectionId, asWriteBuffer); }
private void OnConnected() { Debug.Log("Client Connected"); BADNetworkMessage networkMessage = new BADNetworkMessage("CONNECT", _playerSessionId); Send(networkMessage); Debug.Log("after send message"); }
private void OnDataReceived(ArraySegment <byte> message) { Debug.Log("OnDataReceived"); string convertedMessage = Encoding.UTF8.GetString(message.Array, 0, message.Count); Debug.Log("Converted message: " + convertedMessage); BADNetworkMessage networkMessage = JsonConvert.DeserializeObject <BADNetworkMessage>(convertedMessage); ProcessMessage(networkMessage); }
private void CheckAndSendGameReadyToStartMsg(int connectionId) { if (_playerSessions.Count == MaxPlayersPerSession) { Debug.Log("Game is full and is ready to start."); // tell all players the game is ready to start foreach (KeyValuePair <int, string> playerSession in _playerSessions) { GameSessionState = "STARTED"; BADNetworkMessage responseMessage = new BADNetworkMessage("START", playerSession.Value); SendMessage(playerSession.Key, responseMessage); } } }
private void ProcessMessage(int connectionId, BADNetworkMessage networkMessage) { Debug.Log("Network message: " + networkMessage); if (networkMessage != null && networkMessage._opCode != null) { Debug.Log("processing opcode"); if (networkMessage._opCode == "CONNECT") { Debug.Log("CONNECT OP CODE HIT"); HandleConnect(connectionId, networkMessage._playerSessionId); // send response BADNetworkMessage responseMessage = new BADNetworkMessage("CONNECTED", networkMessage._playerSessionId); SendMessage(connectionId, responseMessage); CheckAndSendGameReadyToStartMsg(connectionId); } else if (networkMessage._opCode == "W") { Debug.Log("W OP CODE HIT"); if (GameSessionState == "STARTED") { CheckForGameOver(connectionId); } else { Debug.LogWarning("Received W opCode before game started."); } } // can handle additional opCods here } else { Debug.Log("ProcessMessage: empty message or null opCode, message ignored."); } }
public void WPressed() { BADNetworkMessage networkMessage = new BADNetworkMessage("W", _playerSessionId); Send(networkMessage); }