A UI Razor panel for a lobby slot. It shows a Join button when the local player is not occupying a slot and calls Manager.Instance.RequestLobbySlot(index) when clicked.
@namespace Sandbox
@using Sandbox;
@using Sandbox.UI;
@using System;
@using System.Text.Json;
@inherits Panel
<root>
@if(!Manager.Instance.LocalPlayer.IsValid())
{
<div class="button" onclick=@ClaimSlot>
<label>Join</label>
</div>
}
</root>
@code
{
public int Index { get; set; }
void ClaimSlot()
{
Manager.Instance?.RequestLobbySlot(Index);
}
protected override int BuildHash() => System.HashCode.Combine(Index, Manager.Instance.LocalPlayer.IsValid());
}