public void OnRealTimeMessageReceived(bool reliable, string senderId, byte[] data) { string rawData = data.ConvertToString(); string[] dataClumps = rawData.Split(' '); string dataHeader = dataClumps[0]; LogDebugMessage("New MSG: " + dataHeader + " from " + senderId); switch (dataHeader) { case _introductionConst: { MPPlayer theNewPlayer = new MPPlayer(PlayGamesPlatform.Instance.RealTime.GetConnectedParticipants().Find(x => x.ParticipantId == senderId)); OtherPlayerJoinedRoom(theNewPlayer); } break; case _gameStartingConst: { if (CurState != RoomStates.GameInProgress) { GameStarted(); LogDebugMessage("Game Starting!"); } } break; case _playerChangedState: { MPPlayer senderPlayer = _playersInRoom.Find(x => x.GetID() == senderId); if (senderPlayer != null) { UserStates oldState = senderPlayer.GetState(); senderPlayer.ChangeStateTo((UserStates)int.Parse(dataClumps[1])); //check for player leaving if (senderPlayer.GetState() == UserStates.Disconnected) { OtherPlayerLeftRoom(senderPlayer); } //check to see if they are setting themselves to ready else if ( (oldState == UserStates.Ready && senderPlayer.GetState() != UserStates.Ready) || //changing from ready to not ready (oldState != UserStates.Ready && senderPlayer.GetState() == UserStates.Ready) //changing from not ready to ready ) { PlayerChangedReady(senderPlayer); } } } break; } }
/// <summary> /// Will inform other users of our state change /// </summary> /// <param name="thePlayer">The player.</param> void OurUserStateChanged(MPPlayer thePlayer) { SendMessageToAll(_playerChangedState + " " + ((int)OurPlayer.GetState())); }