示例#1
0
    public void HandleFragmentMessage(Fragment.Message message)
    {
        if (message.type == Fragment.MessageType.PlayerAuthComplete)
        {
            _authUI.Hide();
            uint index = message.playerAuthComplete.playerIndex;
            if (message.playerAuthComplete.result == (int)Fragment.AuthResult.Success) // TODO remove the need cast
            {
                _players[index].CurrentState = Player.State.AuthorisedWaitingForInfo;
                //_players[index].UIText.text = "Downloading player info...";
            }
            else if (message.playerAuthComplete.result == Fragment.AuthResult.FailDenied)
            {
                //_players[index].UIText.text = "PRESS " + _keyBindings[index].Action.ToString() + " TO PLAY";
            }
            else if (message.playerAuthComplete.result == Fragment.AuthResult.FailAlreadyAuthenticated)
            {
                // TODO lauch message box here!!!
                //_players[index].UIText.text = "Player already authenticated as player " + message.playerAuthComplete.failedExistingPlayerIndex + 1;
            }
        }
        else if (message.type == Fragment.MessageType.PlayerInfo)
        {
            uint index  = message.playerInfo.playerIndex;
            uint handle = message.playerInfo.playerHandle;
            _players[index].Handle = handle;
            Fragment.PlayerGetName(handle, ref _players[index].Name);
            Fragment.PlayerGetID(handle, ref _players[index].ID);
            Fragment.PlayerGetAuthToken(handle, ref _players[index].AuthToken);

            _players[index].CurrentState = Player.State.AuthorisedPlaying;
        }
    }
示例#2
0
 public void HandleFragmentMessage(Fragment.Message msg)
 {
     if (msg.type == Fragment.MessageType.GameInfo)
     {
         _gameHandle = msg.gameInfo.gameHandle;
     }
 }
示例#3
0
    void Update()
    {
        if (_inAnErrorState)
        {
            // Something has broken, stop running for nows
            return;
        }

        Fragment.Tick();

        Fragment.Message msg    = new Fragment.Message();
        Fragment.Result  result = new Fragment.Result();
        while (Fragment.PollMessageQueue(ref msg, ref result))
        {
            // Handle the message
            // ..

            if (result == Fragment.Result.SR_ERROR)
            {
                string errorDesc = "";
                int    errorCode = Fragment.GetLastError(ref errorDesc);
                Debug.Log("Fragment error description: " + errorDesc);
                Debug.Log("Fragment error code: " + errorCode);

                // Typically you'd want to handle any errors elegantly, but in this instance we'll halt the program
                // flow since this is a learning example
                Debug.Log("Carz will now stop ticking internally. Please rectify the errors above and run again.");
                _inAnErrorState = true;
                return;
            }
            else
            {
                // Pass it into sub-systems to handle
                _playerManager.HandleFragmentMessage(msg);
                _carLibrary.HandleFragmentMessage(msg);
            }
        }

        _playerManager.Update();

        GameState.GetActiveState().Tick();
    }
示例#4
0
    void Update()
    {
        Fragment.Tick();

        if (AuthUITimer > 0)
        {
            AuthUITimer -= Time.deltaTime;
            if (AuthUITimer <= 0.0)
            {
                AuthUI.Hide();
            }
        }

        Fragment.Result  result = new Fragment.Result();
        Fragment.Message msg    = new Fragment.Message();
        while (Fragment.PollMessageQueue(ref msg, ref result))
        {
            // Handle the message
            Debug.Log("Fragment Message received. Type: " + msg.type);

            switch (msg.type)
            {
            case Fragment.MessageType.PlayerAuthComplete:
            {
                AuthUI.SetSignedInState(true, "Welcome to the game", "Please wait a moment...");
                AuthUITimer = 2.0f;

                Debug.Log("Player index: " + msg.playerAuthComplete.playerIndex);
                Debug.Log("Auth result: " + msg.playerAuthComplete.result);
                break;
            }

            case Fragment.MessageType.PlayerInfo:
            {
                playerInfoReady = true;
                Debug.Log("Player index: " + msg.playerInfo.playerIndex);
                Debug.Log("Player handle: " + msg.playerInfo.playerHandle);
                playerHandle = msg.playerInfo.playerHandle;
                break;
            }

            case Fragment.MessageType.GameInfo:
            {
                gameInfoReady = true;
                Debug.Log("Game handle: " + msg.gameInfo.gameHandle);
                gameHandle = msg.gameInfo.gameHandle;
                break;
            }

            case Fragment.MessageType.Error:
            {
                Debug.Log("Error context: " + msg.error.context);
                string detailedErrorDesc = "";
                int    code = Fragment.GetLastError(ref detailedErrorDesc);
                Debug.Log("Detailed error desc: " + detailedErrorDesc);
                Debug.Log("Error code: " + code);
                break;
            }
            }
        }

        if ((playerInfoReady && gameInfoReady) && !haveLoggedInfo)
        {
            LogInfo();
            haveLoggedInfo = true;
        }
    }