83 lines
1.7 KiB
C#
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);
|
|
}
|
|
}
|