ui/LobbySlotPanel.razor

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.

Networking
@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());
}