void Start()
    {
        AssignRefs();
        ConnectionStatusText.text = "Connecting";

        PlayerNameInput.text = (PlayerPrefs.HasKey("playerName")) ?
                               PlayerPrefs.GetString("playerName") :
                               "Player " + Random.Range(1000, 10000);
        PhotonNetwork.ConnectUsingSettings();
        LobbyInfoPanel.SetActive(false);
        RoomInfoPanel.SetActive(false);
        SceneManager.sceneLoaded += OnSceneLoaded;
    }
    public override void OnJoinedRoom()
    {
        if (SceneManager.GetActiveScene().buildIndex == 0)
        {
            ConnectionStatusText.text = "In Room: " + PhotonNetwork.CurrentRoom.Name;
            LobbyInfoPanel.SetActive(false);
            RoomInfoPanel.SetActive(true);
            SetRoomGoalType(defaultGoalType);
            SetRoomRoundDuration(defaultRoomDuration);
        }

        if (playerListEntries == null)
        {
            playerListEntries = new Dictionary <int, GameObject>();
        }

        // Create and add PlayerListEntryPrefabs for every player in the room to scrollview
        foreach (PhotonPlayer p in PhotonNetwork.PlayerList)
        {
            GameObject entry = CreateEntry(p);

            if (p.CustomProperties.TryGetValue("PLAYER_READY_KEY", out object isPlayerReady))
            {
                entry.GetComponent <PlayerListEntry>().SetPlayerReady((bool)isPlayerReady);
            }

            playerListEntries.Add(p.ActorNumber, entry);
        }
        if (PhotonNetwork.IsMasterClient)
        {
            StartGameButton.gameObject.SetActive(true);
            StartGameButton.interactable = CheckPlayersReady();
            SetRoomSettingsUI(true);
        }
        else
        {
            StartGameButton.gameObject.SetActive(false);
            SetRoomSettingsUI(false);
        }

        PhotonHashtable props = new PhotonHashtable {
            { "PLAYER_LOADED_LEVEL_KEY", false }
        };

        PhotonNetwork.LocalPlayer.SetCustomProperties(props);

        object temp;

        if (PhotonNetwork.CurrentRoom.CustomProperties.TryGetValue("RoomGoalType", out temp))
        {
            if (temp is byte)
            {
                GoalType type = (GoalType)System.Enum.ToObject(typeof(GoalType), temp);
                switch (type)
                {
                case GoalType.REGULAR:
                    RegGoalToggle.isOn = true;
                    break;

                case GoalType.VERITCAL_WALL:
                    VWallGoalToggle.isOn = true;
                    break;

                case GoalType.HORIZONTAL_WALL:
                    HWallGoalToggle.isOn = true;
                    break;
                }
            }
        }
        if (PhotonNetwork.CurrentRoom.CustomProperties.TryGetValue("RoomRoundDuration", out temp))
        {
            int duration = (int)temp;
            RoundDurationText.text    = duration.ToString() + (duration == 1 ? " minute" : " minutes");
            RoundDurationSlider.value = duration;
        }
    }
 public override void OnJoinedLobby()
 {
     ConnectionStatusText.text = "In Lobby: " + PhotonNetwork.CloudRegion + " Region";
     LobbyInfoPanel.SetActive(true);
     RoomInfoPanel.SetActive(false);
 }