using System.Collections; using System.Collections.Generic; using TMPro; using Unity.Services.Lobbies; using Unity.Services.Lobbies.Models; using UnityEngine; using UnityEngine.UI; public class EventManager : MonoBehaviour { public static EventManager Instance { get; private set; } private void Awake() { if (Instance == null) Instance = this; } [SerializeField] private EventButton eventButtonPrefab; [SerializeField] private Transform content; [SerializeField] private RS_InputField eventName; [SerializeField] private TMP_Dropdown playersDropdown; [SerializeField] private TMP_Dropdown durationDropdown; [SerializeField] private TMP_Dropdown locationDropdown; public void JoinEvent(Lobby lobby) { GameManager.Instance.Loading(true); ConnectionManager.Instance.JoinRelay(lobby.Data["joinCode"].Value, () => { GameManager.Instance.LoadScene(lobby.Data["location"].Value); }); } public void CreateEvent() { string location = locationDropdown.options[locationDropdown.value].text; string playersText = playersDropdown.options[playersDropdown.value].text; if (location == "My Room") { location = LocalPlayerData.RoomID; } if (!int.TryParse(playersText, out int players)) { players = 10; } GameManager.Instance.Loading(true); ConnectionManager.Instance.CreateLobbyAndRelay(eventName.Text, location, players, false, () => { GameManager.Instance.LoadScene(location); }); } public void ClearPanel() { foreach (Transform transform in content) { Destroy(transform.gameObject); } } public async void Render() { ClearPanel(); QueryLobbiesOptions options = new QueryLobbiesOptions() { Count = 25, Filters = new List() { new QueryFilter(QueryFilter.FieldOptions.AvailableSlots, "0", QueryFilter.OpOptions.GT) }, Order = new List() { new QueryOrder(false, QueryOrder.FieldOptions.Created) } }; QueryResponse lobbies = await Lobbies.Instance.QueryLobbiesAsync(); foreach (var lobby in lobbies.Results) { if (lobby.Data["ownerId"]?.Value == LocalPlayerData.ID.ToString() || lobby.Data["isLocation"]?.Value == "1") continue; EventButton button = Instantiate(eventButtonPrefab, content); button.Initialize(lobby); } } }