예제 #1
0
    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;
        }
    }
예제 #2
0
 /// <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()));
 }