Files
test/Assets/Scripts/SelecScreenCharacter.cs
T
2026-01-21 19:16:49 +07:00

87 lines
2.6 KiB
C#

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<RoleInfo> _onClickItemChar;
private Action _onCreateCharacterComplete;
private void Start()
{
if (createCharacterButton != null)
{
createCharacterButton.onClick.AddListener(OnCreateCharacterClicked);
}
}
public void InitScreen(List<RoleInfo> roleInfos, Action<RoleInfo> 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<CharacterItemUI>();
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);
}
}
}