Files
2026-03-04 09:37:33 +08:00

83 lines
1.7 KiB
C#

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<LobbyData> 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 += " <size=70%>(password)</size>";
}
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);
}
}