This repository has been archived on 2025-04-11. You can view files and clone it, but cannot push or open issues or pull requests.
project-undercover/Project Undercover/Assets/Scripts/Lobby/LobbyManager.cs

83 lines
2.5 KiB
C#

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class LobbyManager : Photon.PunBehaviour {
public GameObject playerPanelPrefab;
public GameObject guardsPanel, spysPanel;
private GameObject localPanel;
public Button startButton;
void Start()
{
CreateLocalPlayerPanel();
if (!PhotonNetwork.isMasterClient)
startButton.gameObject.SetActive(false);
}
void CreateLocalPlayerPanel()
{
if (localPanel != null)
Debug.LogError("LobbyManager: localPlayerPanel already exists");
CreatePlayerPanel(PhotonNetwork.playerName);
}
void CreatePlayerPanel(string playerName)
{
// if (!PhotonNetwork.isMasterClient)
// Debug.LogError("LobbyManager: Can't add player on non-master client");
localPanel = PhotonNetwork.Instantiate(playerPanelPrefab.name, Vector3.zero, Quaternion.identity, 0);
if (PhotonNetwork.room.PlayerCount % 2 == 1)
ClickSwitchToGuards();
else
ClickSwitchToSpys();
localPanel.GetComponent<PlayerLobbyPanelController>().SetPlayerName(playerName);
}
public void StartGame()
{
if (PhotonNetwork.isMasterClient)
PhotonNetwork.LoadLevel("GameScene");
}
public override void OnPhotonPlayerConnected(PhotonPlayer other)
{
Debug.Log("OnPhotonPlayerConnected() " + other.NickName);
if (PhotonNetwork.isMasterClient)
{
Debug.Log("OnPhotonPlayerConnected isMasterClient " + PhotonNetwork.isMasterClient);
}
}
public override void OnPhotonPlayerDisconnected(PhotonPlayer other)
{
Debug.Log("OnPhotonPlayerDisconnected() " + other.NickName);
if (PhotonNetwork.isMasterClient)
{
Debug.Log("OnPhotonPlayerDisonnected isMasterClient " + PhotonNetwork.isMasterClient);
}
}
public override void OnLeftRoom()
{
SceneManager.LoadScene("MainMenu");
}
public void LeaveRoom()
{
PhotonNetwork.LeaveRoom();
}
public void ClickSwitchToGuards()
{
localPanel.transform.SetParent(guardsPanel.transform, false);
PersistantPlayerSettings.character = PersistantPlayerSettings.Character.Guard;
}
public void ClickSwitchToSpys()
{
localPanel.transform.SetParent(spysPanel.transform, false);
PersistantPlayerSettings.character = PersistantPlayerSettings.Character.Spy;
}
}