This commit is contained in:
2026-04-28 00:07:42 +07:00
parent e051667037
commit 252489f48a
570 changed files with 2423 additions and 10875 deletions

View File

@@ -1,75 +1,73 @@
using UnityEngine;
using UnityEngine.UIElements;
using System.Threading.Tasks;
namespace UI
namespace Hallucinate.UI
{
public class LobbyController : MonoBehaviour
public class LobbyController : BaseUIController
{
private VisualElement _joinView;
private VisualElement _createView;
private float _lastInteractionTime;
private bool _isCreateMode = false;
private const float AutoReturnDelay = 5f;
private VisualElement _joinContainer;
private VisualElement _createContainer;
private VisualElement _loungeContainer;
private void OnEnable()
private Button _backBtn;
private Button _createFinalBtn;
private Button _startGameBtn;
private Toggle _hostReady;
private Toggle _guestReady;
public override void Initialize(VisualElement uxmlRoot, UIManager manager)
{
var root = GetComponent<UIDocument>().rootVisualElement;
base.Initialize(uxmlRoot, manager);
_joinView = root.Q<VisualElement>("join-view");
_createView = root.Q<VisualElement>("create-view");
_joinContainer = root.Q<VisualElement>("JoinContainer");
_createContainer = root.Q<VisualElement>("CreateContainer");
_loungeContainer = root.Q<VisualElement>("LoungeContainer");
// Back button
root.Q<Button>("btn-back")?.RegisterCallback<ClickEvent>(evt => UIManager.Instance.GoBack());
root.Q<Button>("btn-settings")?.RegisterCallback<ClickEvent>(evt => UIManager.Instance.ToggleSettings());
_backBtn = root.Q<Button>("BackToMenuBtn");
_createFinalBtn = root.Q<Button>("CreateRoomFinalBtn");
_startGameBtn = root.Q<Button>("StartGameBtn");
_hostReady = root.Q<Toggle>("HostReady");
_guestReady = root.Q<Toggle>("GuestReady");
_backBtn.clicked += () => uiManager.Pop();
_createFinalBtn.clicked += () => ShowLounge();
// Create confirm -> Lounge
root.Q<Button>("btn-create-confirm")?.RegisterCallback<ClickEvent>(evt => UIManager.Instance.ShowScreen("Lounge"));
_hostReady.RegisterValueChangedCallback(evt => UpdateStartButton());
_guestReady.RegisterValueChangedCallback(evt => UpdateStartButton());
// Register Interaction Resetters
var textFields = root.Query<TextField>().ToList();
foreach (var field in textFields)
field.RegisterValueChangedCallback(evt => ResetInteractionTimer());
var toggles = root.Query<Toggle>().ToList();
foreach (var t in toggles)
t.RegisterValueChangedCallback(evt => ResetInteractionTimer());
// Password Toggle Logic
var passToggle = root.Q<Toggle>("toggle-password");
var passField = root.Q<TextField>("field-password");
passToggle?.RegisterValueChangedCallback(evt => {
if(passField != null) passField.style.display = evt.newValue ? DisplayStyle.Flex : DisplayStyle.None;
});
ResetInteractionTimer();
UpdateStartButton();
}
private void Update()
public void ShowJoin()
{
if (_isCreateMode)
_joinContainer.style.display = DisplayStyle.Flex;
_createContainer.style.display = DisplayStyle.None;
_loungeContainer.style.display = DisplayStyle.None;
}
public void ShowCreate()
{
_joinContainer.style.display = DisplayStyle.None;
_createContainer.style.display = DisplayStyle.Flex;
_loungeContainer.style.display = DisplayStyle.None;
}
public void ShowLounge()
{
_joinContainer.style.display = DisplayStyle.None;
_createContainer.style.display = DisplayStyle.None;
_loungeContainer.style.display = DisplayStyle.Flex;
}
private void UpdateStartButton()
{
if (_startGameBtn != null)
{
if (Time.time - _lastInteractionTime > AutoReturnDelay)
{
SetMode(false); // Auto return to Stage 1
}
_startGameBtn.SetEnabled(_hostReady.value && _guestReady.value);
}
}
public void SetMode(bool isCreate)
{
_isCreateMode = isCreate;
if (_joinView == null) return;
_joinView.style.display = isCreate ? DisplayStyle.None : DisplayStyle.Flex;
_createView.style.display = isCreate ? DisplayStyle.Flex : DisplayStyle.None;
if (isCreate) ResetInteractionTimer();
}
private void ResetInteractionTimer()
{
_lastInteractionTime = Time.time;
}
}
}