using System; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.UI; public class CharacterSelectPlayer : MonoBehaviour { [SerializeField] private int PlayerIndex; [SerializeField] private GameObject ReadyText; [SerializeField] private PlayerColor PlayerColor; [SerializeField] private Button KickButton; [SerializeField] private TextMeshProUGUI PlayerName; private void Awake() { KickButton.onClick.AddListener(() => { PlayerData playerData = KitchenGameMultiplayer.Instance.GetPlayerDataFromPlayerIndex(PlayerIndex); KitchenGameMultiplayer.Instance.KickPlayer(playerData.ClientId); KitchenGameLobby.Instance.KickPlayer(playerData.PlayerId.ToString()); }); } private void Start() { KitchenGameMultiplayer.Instance.OnPlayerDataNetworkListChanged += KitchenGameMultiplayer_OnPlayerDataNetworkListChanged; CharacterSelectReady.Instance.OnReadyChanged += CharacterSelectReady_OnReadyChanged; KickButton.gameObject.SetActive(NetworkManager.Singleton.IsServer); UpdatePlayer(); } private void CharacterSelectReady_OnReadyChanged(object sender, EventArgs e) => UpdatePlayer(); private void KitchenGameMultiplayer_OnPlayerDataNetworkListChanged(object sender, EventArgs e) => UpdatePlayer(); private void UpdatePlayer() { if (KitchenGameMultiplayer.Instance.IsPlayerIndexConnected(PlayerIndex)) { Show(); PlayerData playerData = KitchenGameMultiplayer.Instance.GetPlayerDataFromPlayerIndex(PlayerIndex); ReadyText.SetActive(CharacterSelectReady.Instance.IsPlayerReady(playerData.ClientId)); PlayerName.text = playerData.PlayerName.ToString(); PlayerColor.SetPlayerColor(KitchenGameMultiplayer.Instance.GetPlayerColor(playerData.ColorId)); } else { Hide(); } } private void Hide() => gameObject.SetActive(false); private void Show() => gameObject.SetActive(true); private void OnDestroy() => KitchenGameMultiplayer.Instance.OnPlayerDataNetworkListChanged -= KitchenGameMultiplayer_OnPlayerDataNetworkListChanged; }