Ui/LobbyBrowser.razor
@using System
@using Clover.Data
@using Sandbox;
@using Sandbox.Network
@using Sandbox.UI;
@inherits Panel
@namespace Clover.Ui
<root>
@if ( Lobbies.Any() )
{
@foreach ( var lobby in Lobbies )
{
<div class="lobby">
<h2>@lobby.Name</h2>
<button @onclick=@( () => Networking.Connect( lobby.LobbyId ) )>Join</button>
</div>
}
}
@if ( _isRefreshing )
{
<div class="loading">Refreshing...</div>
}
<button @onclick=@( () => Refresh() )>Refresh</button>
<div style="flex-direction: column;" onclick=@( () => Clipboard.SetText( Game.SteamId.ToString() ) )>
<span>@($"Steam ID: {Game.SteamId}")</span>
<span>@($"Host: {Connection.Host.SteamId}")</span>
<span>@($"Address: {Connection.Host.Address}")</span>
<span>@($"Party: {Connection.Host.PartyId}")</span>
</div>
</root>
@code {
private List<LobbyInformation> Lobbies = new();
private bool _isRefreshing = false;
private async void Refresh()
{
_isRefreshing = true;
Lobbies = await Networking.QueryLobbies();
_isRefreshing = false;
}
protected override int BuildHash()
{
return HashCode.Combine( _isRefreshing, Lobbies );
}
}