This commit is contained in:
2026-04-26 05:02:49 +07:00
parent 5b22d31259
commit a6891ab5b8
6 changed files with 207 additions and 275 deletions

View File

@@ -5,44 +5,36 @@ namespace UI
{
public class LobbyController : MonoBehaviour
{
private UIDocument _doc;
private Button _btnLeave;
private Button _btnStart;
private ScrollView _playerList;
private VisualElement _joinView;
private VisualElement _createView;
private void OnEnable()
{
_doc = GetComponent<UIDocument>();
var root = _doc.rootVisualElement;
var root = GetComponent<UIDocument>().rootVisualElement;
// BINDING: Tìm element theo tên (Name) đã đặt trong UXML
_btnLeave = root.Q<Button>("btn-leave");
_btnStart = root.Q<Button>("btn-start");
_playerList = root.Q<ScrollView>("player-list");
_joinView = root.Q<VisualElement>("join-view");
_createView = root.Q<VisualElement>("create-view");
// ĐĂNG KÝ SỰ KIỆN:
if (_btnLeave != null)
_btnLeave.clicked += OnLeaveClicked;
// Back button
root.Q<Button>("btn-back")?.RegisterCallback<ClickEvent>(evt => UIManager.Instance.GoBack());
root.Q<Button>("btn-settings")?.RegisterCallback<ClickEvent>(evt => UIManager.Instance.ToggleSettings());
// Create confirm -> Lounge
root.Q<Button>("btn-create-confirm")?.RegisterCallback<ClickEvent>(evt => UIManager.Instance.ShowScreen("Lounge"));
if (_btnStart != null)
_btnStart.clicked += OnStartClicked;
// Toggle password field in Create View
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;
});
}
private void OnLeaveClicked()
public void SetMode(bool isCreate)
{
UIManager.Instance.GoBack();
}
private void OnStartClicked()
{
UIManager.Instance.ShowScreen("Lounge");
}
private void OnDisable()
{
// Hủy đăng ký để tránh memory leak
if (_btnLeave != null) _btnLeave.clicked -= OnLeaveClicked;
if (_btnStart != null) _btnStart.clicked -= OnStartClicked;
if (_joinView == null) return;
_joinView.style.display = isCreate ? DisplayStyle.None : DisplayStyle.Flex;
_createView.style.display = isCreate ? DisplayStyle.Flex : DisplayStyle.None;
}
}
}