UI/MainMenu/MainMenuComponent.razor

A Razor UI component for the main menu in a KOTH project. It defines a canvas with a Watermark component, commented-out navigation buttons and several commented-out methods for loading scenes and joining lobbies, plus simple CSS styles.

Networking
@namespace KOTH.UI
@using Sandbox.Events
@inherits PanelComponent

<root>
	<canvas>
		<Watermark />

		@* <div class="nav">
			@if (BaseMenu)
			{
				<button onclick=@(() => { BaseMenu = false; SinglePlayer = true; })>SinglePlayer</button>
				<button onclick=@(() => { BaseMenu = false; Multiplayer = true; })>Multiplayer</button>
				<button onclick=@(() => Game.Overlay.ShowSettingsModal())>Settings</button>
			}

			@if (SinglePlayer)
			{
				<button onclick=@(() => LoadBotz())>Botz</button>
				<button onclick=@(() => LoadJumper())>Jump Map</button>
				<button onclick=@(() => { BaseMenu = true; SinglePlayer = false; })>Back</button>
			}

			@if (Multiplayer)
			{
				<button onclick=@(() => LoadMge())>1v1</button>
				<button onclick=@(() => LoadPayload())>Payload</button>
				<button onclick=@(() => { BaseMenu = true; Multiplayer = false; })>Back</button>
			}
		</div> *@

	</canvas>
</root>

<style>
	* {
	width: auto;
	pointer-events: all;
	color: white;
	}

	.nav {
	position: absolute;
	top: 90%;
	right: 50%;
	}

	.nav button {
	width: 256px;
	font-size: 16px;
	}

	.nav button:hover {
	cursor: pointer;
	}
</style>

@code
{
	// bool BaseMenu = true;
	// bool SinglePlayer = false;
	// bool Multiplayer = false;
	// bool Settings = false;

	// private void LoadBotz()
	// {
	// 	Game.ActiveScene.LoadFromFile("scenes/multiplayer_test/multiplayertest.scene");
	// }

	// private void LoadJumper()
	// {
	// 	Game.ActiveScene.LoadFromFile("scenes/jumpmap/jump1.scene");
	// }

	// bool Trying = false;
	// private async void LoadPayload()
	// {
	// 	if (Networking.IsConnecting || Trying)
	// 	{
	// 		Log.Info("connecting...");
	// 		return;
	// 	}

	// 	if (Game.IsEditor)
	// 	{
	// 		Game.ActiveScene.LoadFromFile("scenes/pl_sheff/sheff.scene");
	// 		return;
	// 	}

	// 	Trying = true;
	// 	var Lobbies = await Networking.QueryLobbies(Game.Ident);
	// 	foreach (var Lobby in Lobbies)
	// 	{
	// 		if (Lobby.Name.StartsWith("pl_") && !Lobby.IsFull)
	// 		{
	// 			if (await Networking.TryConnectSteamId(Lobby.LobbyId))
	// 			{
	// 				return;
	// 			}
	// 		}
	// 	}
	// 	Game.ActiveScene.LoadFromFile("scenes/pl_sheff/sheff.scene");
	// 	Trying = false;
	// }

	// private async void LoadMge()
	// {
	// 	if (Networking.IsConnecting || Trying)
	// 	{
	// 		Log.Info("connecting...");
	// 		return;
	// 	}

	// 	if (Game.IsEditor)
	// 	{
	// 		Game.ActiveScene.LoadFromFile("scenes/mge/mge.scene");
	// 		return;
	// 	}

	// 	Trying = true;
	// 	var Lobbies = await Networking.QueryLobbies(Game.Ident);
	// 	foreach (var Lobby in Lobbies)
	// 	{
	// 		if (Lobby.Name.StartsWith("mge_") && !Lobby.IsFull)
	// 		{
	// 			if (await Networking.TryConnectSteamId(Lobby.LobbyId))
	// 			{
	// 				return;
	// 			}
	// 		}
	// 	}
	// 	Game.ActiveScene.LoadFromFile("scenes/mge/mge.scene");
	// 	Trying = false;
	// }

	// protected override int BuildHash()
	// {
	// 	return HashCode.Combine(Time.Now);
	// }
}