76 lines
1.9 KiB
Plaintext
76 lines
1.9 KiB
Plaintext
@using Sandbox;
|
|
@using System;
|
|
@using System.Linq;
|
|
@using System.Threading.Tasks;
|
|
@using Sandbox.Menu;
|
|
@using Sandbox.UI;
|
|
|
|
<root>
|
|
<label class="game-title">
|
|
@Game.Menu.Package.Title
|
|
</label>
|
|
|
|
<div class="controls">
|
|
<div class="span">
|
|
@if ( MaxPlayersSupported > 1 )
|
|
{
|
|
<FormGroup class="form-group">
|
|
<Label>Maximum Players</Label>
|
|
<Control>
|
|
<SliderControl ShowRange=@true Min=@(1f) Max=@MaxPlayersSupported Value:bind=@Game.Menu.Lobby.MaxMembers />
|
|
</Control>
|
|
</FormGroup>
|
|
}
|
|
|
|
<FormGroup class="form-group">
|
|
<Label>Map</Label>
|
|
<Control>
|
|
<SlimPackageCard OnLaunch=@OnMapClicked Package=@MapPackage />
|
|
</Control>
|
|
</FormGroup>
|
|
</div>
|
|
|
|
<div class="spacer" />
|
|
|
|
<a class="button" onclick=@Play>Start</a>
|
|
<a class="button" href="/">Return</a>
|
|
</div>
|
|
</root>
|
|
|
|
@code
|
|
{
|
|
int MaxPlayersSupported { get; set; } = 1;
|
|
int MaxPlayers { get; set; } = 1;
|
|
Package MapPackage { get; set; }
|
|
|
|
void OnMapClicked()
|
|
{
|
|
Game.Overlay.ShowPackageSelector( "type:map sort:popular", OnMapSelected );
|
|
StateHasChanged();
|
|
}
|
|
|
|
void OnMapSelected( Package map )
|
|
{
|
|
MapPackage = map;
|
|
StateHasChanged();
|
|
}
|
|
|
|
protected override async Task OnParametersSetAsync()
|
|
{
|
|
MaxPlayersSupported = Game.Menu.Package.GetMeta<int>( "MaxPlayers", 1 );
|
|
MaxPlayers = MaxPlayersSupported;
|
|
|
|
MapPackage = await Package.FetchAsync( "facepunch.square", false );
|
|
StateHasChanged();
|
|
}
|
|
|
|
async Task Play()
|
|
{
|
|
await Game.Menu.StartServerAsync( MaxPlayers, $"My game", MapPackage.FullIdent );
|
|
}
|
|
|
|
protected override int BuildHash()
|
|
{
|
|
return HashCode.Combine( MaxPlayers, MapPackage );
|
|
}
|
|
} |