using System; using Heathen.SteamworksIntegration; using Michsky.UI.Heat; using TMPro; using UnityEngine; public class UI_LobbyListItem : MonoBehaviour { [SerializeField] private ShopButtonManager shopButtonManager; [SerializeField] private ButtonManager joinButton; [SerializeField] private TMP_Text map; [SerializeField] private TMP_Text ping; [SerializeField] private TMP_Text country; [SerializeField] private TMP_Text playerCount; [SerializeField] private LocalizationSettings localizationSettings; private LobbyData lobbyData; public LobbyData LobbyData => lobbyData; public static event Action OnJoinLobbyClick; public void Initialize(LobbyData lobbyData) { this.lobbyData = lobbyData; Refresh(); } private void OnEnable() { Refresh(); } private void Refresh() { if (lobbyData.IsValid) { string text = lobbyData.Name; if (lobbyData.GetMetadata().TryGetValue("Password", out var value) && !string.IsNullOrEmpty(value)) { text += " (password)"; } shopButtonManager.SetText(text); if (lobbyData.GetMetadata().TryGetValue("Map", out var value2) && !string.IsNullOrEmpty(value2)) { map.text = value2; } else { map.text = "Unknown"; } ping.text = "N/A"; if (lobbyData.GetMetadata().TryGetValue("Country", out var value3) && int.TryParse(value3, out var result) && result >= 0 && result < localizationSettings.languages.Count) { country.text = localizationSettings.languages[result].languageName; } else { country.text = "Unknown"; } playerCount.text = $"{lobbyData.MemberCount}/{lobbyData.MaxMembers}"; } } public void JoinOnClick() { UI_LobbyListItem.OnJoinLobbyClick?.Invoke(lobbyData); } }