87 lines
2.6 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|