LobbyMenu (UI Handler)

mail@pastecode.io avatar
unknown
csharp
17 days ago
2.3 kB
2
Indexable
Never
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);
    }
}
Leave a Comment