LobbyMenu (UI Handler)
unknown
csharp
a year ago
2.3 kB
10
Indexable
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using System.Collections;
public class LobbyMenu : MonoBehaviour
{
LobbyCreateOrJoinHandler _manager;
bool _isCreateLobbyMenuOpen = false;
[SerializeField] Animator _createLobbyMenuAnimator;
[SerializeField] TMP_InputField _lobbyName;
[SerializeField] TMP_InputField _joinLobbyCode;
[SerializeField] TextMeshProUGUI _statusText;
[SerializeField] Button _createLobbyButton;
[SerializeField] Button _openCreateLobbyButton;
[SerializeField] Button _joinLobbyByCodeButton;
void Start()
{
_openCreateLobbyButton.onClick.AddListener(ShowCreateLobbyMenu);
_createLobbyButton.onClick.AddListener(CreateLobby);
_joinLobbyByCodeButton.onClick.AddListener(JoinLobby);
_manager = GetComponent<LobbyCreateOrJoinHandler>();
}
void Update()
{
if (_isCreateLobbyMenuOpen && Input.GetKeyDown(KeyCode.Escape))
{
HideCreateLobbyMenu();
}
}
void CreateLobby()
{
if (_lobbyName.text.Length > 3 && _lobbyName.text.Length < 17)
{
_manager.CreateLobby(_lobbyName.text);
_lobbyName.text = "";
_statusText.text = _manager.GetRoomCode();
}
else
{
_statusText.color = Color.red;
_lobbyName.text = "";
}
}
void JoinLobby()
{
if (_joinLobbyCode.text != string.Empty)
{
_manager.JoinLobby(_joinLobbyCode.text);
}
_joinLobbyCode.text = "";
}
void ShowCreateLobbyMenu()
{
if (_isCreateLobbyMenuOpen) return;
_isCreateLobbyMenuOpen = true;
_createLobbyMenuAnimator.gameObject.SetActive(true);
_createLobbyMenuAnimator.Play("Show");
}
void HideCreateLobbyMenu()
{
if (!_isCreateLobbyMenuOpen) return;
_isCreateLobbyMenuOpen = false;
StartCoroutine(HideLobbyMenuCoroutine());
}
IEnumerator HideLobbyMenuCoroutine()
{
_createLobbyMenuAnimator.Play("Hide");
yield return new WaitForSeconds(0.75f);
_createLobbyMenuAnimator.gameObject.SetActive(false);
}
}Editor is loading...
Leave a Comment