using System; using System.Collections.Generic; using System.Linq; using Unity.Services.Lobbies.Models; using UnityEngine; namespace LobbyScripts { public class LobbyPlayerList : MonoBehaviour { [SerializeField] private LobbyPlayerData _lobbyPlayer; [SerializeField] private Transform _parent; private List _players; public List PlayerList => _players; private void Awake() => _players ??= new List(); private void OnEnable() => GameLobby.OnLobbyCreated += (_,_) => ClearLobby(); public void PlayerJoined(Player player, Lobby lobby, bool isHost) { var playerData = Instantiate(_lobbyPlayer, _parent); playerData.SetPlayerData(player, lobby, isHost); if(_players.Contains(playerData)) return; _players.Add(playerData); } public void RemovePlayer(string playerID) { Debug.Log($"Main Id: {playerID}"); foreach (var playerData in _players) { Debug.Log(playerData.PlayerID); } var player = _players.FirstOrDefault(player => player.PlayerID == playerID); if (player == null) return; if (!_players.Contains(player)) return; _players.Remove(player); Destroy(player.gameObject); } public void ClearLobby() { if (_players.Count > 0) { foreach (var player in _players) { if(player == null ) continue; Destroy(player.gameObject); } _players.Clear(); } } } }