Update init flow

This commit is contained in:
HungDK
2026-01-22 16:24:10 +07:00
parent be5c38b0e3
commit 8cf5ba8fa9
3 changed files with 267 additions and 27 deletions
+47 -3
View File
@@ -10,12 +10,13 @@ namespace BrewMonster.UI
public class SelecScreenCharacter : MonoBehaviour
{
[SerializeField] private GameObject characterItemPrefab;
[SerializeField] private GameObject addCharacterItemPrefab;
[SerializeField] private RectTransform parentItems;
[SerializeField] private Button createCharacterButton;
[SerializeField] private CreateCharacterScreen createCharacterScreen;
private Action<RoleInfo> _onClickItemChar;
private Action _onCreateCharacterComplete;
private Action<RoleInfo> _onCreateCharacterComplete;
private void Start()
{
@@ -25,7 +26,7 @@ namespace BrewMonster.UI
}
}
public void InitScreen(List<RoleInfo> roleInfos, Action<RoleInfo> OnClickItemChar, Action onCreateCharacterComplete = null)
public void InitScreen(List<RoleInfo> roleInfos, Action<RoleInfo> OnClickItemChar, Action<RoleInfo> onCreateCharacterComplete = null)
{
_onClickItemChar = OnClickItemChar;
_onCreateCharacterComplete = onCreateCharacterComplete;
@@ -50,6 +51,49 @@ namespace BrewMonster.UI
item.InitItem(info, OnClickItemChar);
}
}
// If number of roles < 8, spawn addCharacterItemPrefab and hide createCharacterButton
if (roleInfos.Count < 8)
{
// Hide the createCharacterButton
if (createCharacterButton != null)
{
createCharacterButton.gameObject.SetActive(false);
}
// Spawn addCharacterItemPrefab
if (addCharacterItemPrefab != null && parentItems != null)
{
GameObject addCharacterItem = Instantiate(addCharacterItemPrefab, parentItems);
// Set up click handler for the add character item
Button addButton = addCharacterItem.GetComponent<Button>();
if (addButton == null)
{
addButton = addCharacterItem.GetComponentInChildren<Button>();
}
if (addButton != null)
{
addButton.onClick.RemoveAllListeners();
addButton.onClick.AddListener(OnCreateCharacterClicked);
}
}
}
else
{
// Show the createCharacterButton if we have 8 or more roles
if (createCharacterButton != null)
{
createCharacterButton.gameObject.SetActive(true);
}
}
}
else
{
// If roleInfos is null, show createCharacterButton
if (createCharacterButton != null)
{
createCharacterButton.gameObject.SetActive(true);
}
}
}
@@ -70,7 +114,7 @@ namespace BrewMonster.UI
}
gameObject.SetActive(true);
_onCreateCharacterComplete?.Invoke();
_onCreateCharacterComplete?.Invoke(newRole);
}
private void OnCreateCharacterCancel()