コード例 #1
0
 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;
 }
コード例 #2
0
    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.");
        }
    }
コード例 #3
0
    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);
    }
コード例 #4
0
    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);
    }
コード例 #5
0
    private void OnConnected()
    {
        Debug.Log("Client Connected");

        BADNetworkMessage networkMessage = new BADNetworkMessage("CONNECT", _playerSessionId);

        Send(networkMessage);

        Debug.Log("after send message");
    }
コード例 #6
0
    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);
    }
コード例 #7
0
    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);
            }
        }
    }
コード例 #8
0
    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.");
        }
    }
コード例 #9
0
    public void WPressed()
    {
        BADNetworkMessage networkMessage = new BADNetworkMessage("W", _playerSessionId);

        Send(networkMessage);
    }