From 3eadd532cc21c4427dee0b1cec734e746b017b3c Mon Sep 17 00:00:00 2001 From: VuNgocHaiC7 Date: Mon, 4 May 2026 17:42:57 +0700 Subject: [PATCH] update test logout --- Assets/PerfectWorld/Scene/Bootstrap.unity | 4 +- .../Scripts/Players/PlayerModelPreview.cs | 43 ++++++++++++------- .../Scripts/UI/Login/LoginScreenUI.cs | 17 +++++++- Assets/Prefabs/UI/SelectCharacterUI.prefab | 2 +- Assets/Scripts/SelecScreenCharacter.cs | 24 ++++++++--- 5 files changed, 66 insertions(+), 24 deletions(-) diff --git a/Assets/PerfectWorld/Scene/Bootstrap.unity b/Assets/PerfectWorld/Scene/Bootstrap.unity index 73241b4ef4..dbef5efbea 100644 --- a/Assets/PerfectWorld/Scene/Bootstrap.unity +++ b/Assets/PerfectWorld/Scene/Bootstrap.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f809da92f7a74929fe4911b38ecddcf5bfe0fa9f667ad04f6c927511246975ae -size 308267 +oid sha256:fdca6f6915cfc055b350581a53fbc4d2e19ab522da9eb954295d71d45d8aed58 +size 303299 diff --git a/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs b/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs index d5dfdfc43b..5bfee4a82b 100644 --- a/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs +++ b/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs @@ -110,29 +110,42 @@ namespace BrewMonster.Scripts public void ClearModels() { - for (int i = 0; i < playerModels.Count; i++) - { - if (playerModels[i] != null) - Destroy(playerModels[i]); - } playerModels.Clear(); playerModelIds.Clear(); + + if (modelRoot != null) + { + foreach (Transform child in modelRoot) + { + Destroy(child.gameObject); + } + } } private void ClearModelsImmediate() { - for (int i = 0; i < playerModels.Count; i++) - { - if (playerModels[i] != null) - { - if (Application.isPlaying) - Destroy(playerModels[i]); - else - DestroyImmediate(playerModels[i]); - } - } playerModels.Clear(); playerModelIds.Clear(); + + if(modelRoot != null) + { + var children = new Transform[modelRoot.childCount]; + for (int i = 0; i < modelRoot.childCount; i++) + { + children[i] = modelRoot.GetChild(i); + } + + foreach (Transform child in children) + { + if(child != null) + { + if(Application.isPlaying) + Destroy(child.gameObject); + else + DestroyImmediate(child.gameObject); + } + } + } } private async UniTask LoadPlayerModel(RoleInfo role) diff --git a/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs b/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs index 5e2cbc3791..48448acc5c 100644 --- a/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs +++ b/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs @@ -102,7 +102,7 @@ namespace BrewMonster.UI { if (_roleInfos != null) { - _selectCharacterScreen.InitScreen(_roleInfos, OnClickSelectCharacter, OnCreateCharacterComplete); + _selectCharacterScreen.InitScreen(_roleInfos, OnClickSelectCharacter, OnCreateCharacterComplete, OnExitCharacterSelect); _roleInfos = null; } @@ -422,6 +422,21 @@ namespace BrewMonster.UI { BMLogger.LogError($"Logout failed -- errorCode: {errorCode}: {errorMessage}"); } + + _loginInProgress = false; + if (_loginButton != null) + _loginButton.interactable = true; + } + + private void OnExitCharacterSelect() + { + BMLogger.Log("Exiting character select, returning to login screen."); + if(_selectCharacterScreen != null) + _selectCharacterScreen.gameObject.SetActive(false); + + _loginInProgress = false; + if(_loginButton != null) + _loginButton.interactable = true; } } } diff --git a/Assets/Prefabs/UI/SelectCharacterUI.prefab b/Assets/Prefabs/UI/SelectCharacterUI.prefab index 6cf572cc64..b237cd413f 100644 --- a/Assets/Prefabs/UI/SelectCharacterUI.prefab +++ b/Assets/Prefabs/UI/SelectCharacterUI.prefab @@ -989,8 +989,8 @@ MonoBehaviour: parentItems: {fileID: 2643174602035272289} createCharacterButton: {fileID: 2685968509838782728} _btnEnterGame: {fileID: 5173447691193350084} + _btnExit: {fileID: 1166159884785039946} createCharacterScreen: {fileID: 0} - playerModelPreview: {fileID: 0} --- !u!1 &7510180475820570348 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/SelecScreenCharacter.cs b/Assets/Scripts/SelecScreenCharacter.cs index 249bb89897..874ad3268c 100644 --- a/Assets/Scripts/SelecScreenCharacter.cs +++ b/Assets/Scripts/SelecScreenCharacter.cs @@ -18,11 +18,13 @@ namespace BrewMonster.UI [SerializeField] private RectTransform parentItems; [SerializeField] private Button createCharacterButton; [SerializeField] private Button _btnEnterGame; + [SerializeField] private Button _btnExit; [SerializeField] private CreateCharacterScreen createCharacterScreen; private CharacterItemUI _selectingCharacterItemUI; private Action _onClickItemChar; private Action _onCreateCharacterComplete; + private Action _onExit; private List _roleInfos; private Coroutine _showModelReadyCoroutine; @@ -33,6 +35,11 @@ namespace BrewMonster.UI _btnEnterGame.onClick.AddListener(OnClickedEnterGame); _btnEnterGame.gameObject.SetActive(false); + if(_btnExit != null) + { + _btnExit.onClick.AddListener(OnClickedExit); + } + if (_roleInfos != null && _roleInfos.Count > 0) { PlayerModelPreview.Instance?.ShowAllPlayerModels(_roleInfos); @@ -57,10 +64,11 @@ namespace BrewMonster.UI } } - public void InitScreen(List roleInfos, Action OnClickItemChar, Action onCreateCharacterComplete = null) + public void InitScreen(List roleInfos, Action OnClickItemChar, Action onCreateCharacterComplete = null, Action onExit = null) { _onClickItemChar = OnClickItemChar; _onCreateCharacterComplete = onCreateCharacterComplete; + _onExit = onExit; // Clear existing items if (parentItems != null) @@ -110,7 +118,7 @@ namespace BrewMonster.UI addButton.onClick.AddListener(OnCreateCharacterClicked); } } - + } else { @@ -120,13 +128,13 @@ namespace BrewMonster.UI createCharacterButton.gameObject.SetActive(true); } } - + // Load player preview 3D models PlayerModelPreview.Instance?.ShowAllPlayerModels(roleInfos); } else { - if (PlayerModelPreview.Instance != null) + if (PlayerModelPreview.Instance != null) PlayerModelPreview.Instance.ShowAllPlayerModels(null); // If roleInfos is null, show createCharacterButton if (createCharacterButton != null) @@ -143,7 +151,7 @@ namespace BrewMonster.UI return; } - if(_selectingCharacterItemUI!=null) + if (_selectingCharacterItemUI != null) { _selectingCharacterItemUI.SetFocus(false); } @@ -230,5 +238,11 @@ namespace BrewMonster.UI BMLogger.LogError("No role selected"); } } + + private void OnClickedExit() + { + _onExit?.Invoke(); + gameObject.SetActive(false); + } } }