LobbyHandler
unknown
csharp
a year ago
3.8 kB
10
Indexable
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using System.Collections;
using Unity.Netcode;
public class LobbyRoomUIManager : NetworkBehaviour
{
//Deck Select Menu
public bool IsDeckMenuDisplayed { get; private set; } = false;
public float TimePassedDisplayed { get; private set; }
[SerializeField] Button _deckMenuButton;
[SerializeField] Button _settingsButton;
[SerializeField] Animator _deckMenuAnimator;
[SerializeField] TextMeshProUGUI _lobbyNameText;
[SerializeField] TextMeshProUGUI _lobbyRoomCode;
[SerializeField] TextMeshProUGUI _relayJoinCode;
[SerializeField] TextMeshProUGUI _hostName;
[SerializeField] TextMeshProUGUI _guestName;
[SerializeField] Image _hostImage;
[SerializeField] Image _guestImage;
[SerializeField] public DeckSO SelectedDeck { get; private set; }
[SerializeField] public DeckSO GuestSelectedDeck { get; private set; }
[SerializeField] TextMeshProUGUI _selectedDeckName;
[SerializeField] Image _selectedDeckImage;
void Start()
{
LoadAllButtonListeners();
LoadComponents();
StartCoroutine(SetLobbyRoomCodeDisplay());
}
void Update()
{
if (IsDeckMenuDisplayed)
{
if (Input.GetKeyDown(KeyCode.Escape))
HideDeckSelectMenu();
TimePassedDisplayed += Time.deltaTime;
}
}
void OnApplicationQuit()
{
LobbyHandler.Instance.DeleteLobby(LobbyHandler.Instance.LobbyID);
}
void LoadComponents()
{
if (IsHost)
_hostName.text = SecurePlayerPrefs.GetString("_displayName");
if (IsClient)
_guestName.text = SecurePlayerPrefs.GetString("_displayName");
}
void LoadAllButtonListeners()
{
_deckMenuButton.onClick.AddListener(ShowDeckSelectMenu);
_settingsButton.onClick.AddListener(ReturnToHomeMenu);
}
public void ShowDeckSelectMenu()
{
IsDeckMenuDisplayed = true;
_deckMenuAnimator.Play("Show");
}
public void HideDeckSelectMenu()
{
TimePassedDisplayed = 0;
IsDeckMenuDisplayed = false;
_deckMenuAnimator.Play("Hide");
}
public void SelectDeck(DeckSO selectedDeck)
{
StartCoroutine(PerformDeckSelect(selectedDeck));
}
public IEnumerator PerformDeckSelect(DeckSO selectedDeck)
{
HideDeckSelectMenu();
if (selectedDeck == SelectedDeck) yield return null;
SelectedDeck = selectedDeck;
yield return new WaitForSeconds(0.1f);
ChangeLeaderImageClientRpc();
_selectedDeckName.text = SelectedDeck.NombreDelMazo;
_selectedDeckImage.sprite = SelectedDeck.Lider.Ilustracion;
}
[ClientRpc]
void ChangeLeaderImageClientRpc()
{
Debug.Log("Client Rpc is being called");
ChangeLeaderImageServerRpc();
}
[ServerRpc]
void ChangeLeaderImageServerRpc()
{
if (NetworkManager.Singleton.IsHost)
_hostImage.sprite = SelectedDeck.Lider.Ilustracion;
else
_guestImage.sprite = SelectedDeck.Lider.Ilustracion;
}
IEnumerator SetLobbyRoomCodeDisplay()
{
yield return new WaitForSeconds(0.3f);
_lobbyRoomCode.text = LobbyHandler.Instance.RoomCode;
_lobbyNameText.text = LobbyHandler.Instance.LobbyName;
_relayJoinCode.text = LobbyHandler.Instance.RelayCode;
}
void ReturnToHomeMenu()
{
LobbyHandler.Instance.DeleteLobby(LobbyHandler.Instance.LobbyID);
SceneTransitionManager.Instance.LoadSceneTransition(SceneTransitionManager.Instance.Wipe, "MainMenu");
}
}Editor is loading...
Leave a Comment