Esempio n. 1
0
    /// <summary>
    /// Updates the play game request
    /// </summary>
    void Update()
    {
        if (!m_initialised)
        {
            SelectNewLevel(selectedLevel);
            m_initialised = true;
        }

        UpdatePlayersList();

        if (Diagnostics.IsActive())
        {
            Diagnostics.Add("Max Players Chosen", Utilities.GetMaximumPlayers());
        }

        if (!m_playGameRequest)
        {
            if (!m_network.IsConnected())
            {
                // Wait until connected before entering a room
                m_joinGameRequest = false;
                lobbyStatus.text  = "Connecting" + GetDots();
            }
            else
            {
                lobbyStatus.text = "Connected";
                if (isReady.isOn)
                {
                    if (!m_joinGameRequest)
                    {
                        m_joinGameRequest = true;
                        m_network.JoinGameLevel(m_selectedLevel);
                        SetMaxPlayerSlider(false);
                    }
                    else if (m_network.IsRoomReady())
                    {
                        StartGame();
                        m_playGameRequest = true;
                    }

                    if (Utilities.IsOpenLeveL(m_selectedLevel) ||
                        !m_network.IsInRoom() ||
                        m_network.GetPlayerID() < 0)
                    {
                        lobbyStatus.text = "Joining Level" + GetDots();
                    }
                    else
                    {
                        int maxSlots = Utilities.GetMaximumPlayers();
                        int players  = m_network.GetRoomPlayerCount();
                        lobbyStatus.text = "Waiting for: " +
                                           (maxSlots - players).ToString() + " / " + maxSlots.ToString();
                    }
                }
                else if (m_joinGameRequest)
                {
                    Debug.Log("Leaving game room from lobby");
                    m_network.LeaveGameLevel();
                    m_joinGameRequest = false;
                    SetMaxPlayerSlider(true);
                }
            }
        }
        else
        {
            // At this point if a disconnect happens let the level deal with it
            lobbyStatus.text = "Entering Game";
            if (FadeGame.Get().IsFadedIn())
            {
                FadeGame.Get().FadeOut();
                Application.LoadLevel((int)Utilities.GetSceneIDFromLevel(m_selectedLevel));
            }
        }
    }