50 lines
2.0 KiB
C#
50 lines
2.0 KiB
C#
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;
|
|
}
|