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; } }
public void HandleFragmentMessage(Fragment.Message msg) { if (msg.type == Fragment.MessageType.GameInfo) { _gameHandle = msg.gameInfo.gameHandle; } }
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(); }
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; } }