using CSNetwork.Protocols.RPCData; using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using BrewMonster; namespace BrewMonster.UI { public class SelecScreenCharacter : MonoBehaviour { [SerializeField] private GameObject characterItemPrefab; [SerializeField] private RectTransform parentItems; [SerializeField] private Button createCharacterButton; [SerializeField] private CreateCharacterScreen createCharacterScreen; private Action _onClickItemChar; private Action _onCreateCharacterComplete; private void Start() { if (createCharacterButton != null) { createCharacterButton.onClick.AddListener(OnCreateCharacterClicked); } } public void InitScreen(List roleInfos, Action OnClickItemChar, Action onCreateCharacterComplete = null) { _onClickItemChar = OnClickItemChar; _onCreateCharacterComplete = onCreateCharacterComplete; // Clear existing items if (parentItems != null) { foreach (Transform child in parentItems) { Destroy(child.gameObject); } } // Create character items if (roleInfos != null) { foreach (RoleInfo info in roleInfos) { if (characterItemPrefab != null && parentItems != null) { CharacterItemUI item = Instantiate(characterItemPrefab, parentItems).GetComponent(); item.InitItem(info, OnClickItemChar); } } } } private void OnCreateCharacterClicked() { if (createCharacterScreen != null) { gameObject.SetActive(false); createCharacterScreen.Show(OnCreateCharacterComplete, OnCreateCharacterCancel); } } private void OnCreateCharacterComplete(RoleInfo newRole) { if (createCharacterScreen != null) { createCharacterScreen.Hide(); } gameObject.SetActive(true); _onCreateCharacterComplete?.Invoke(); } private void OnCreateCharacterCancel() { if (createCharacterScreen != null) { createCharacterScreen.Hide(); } gameObject.SetActive(true); } } }