UI/GameOver.razor
@using Sandbox;
@using Sandbox.UI;
@inherits PanelComponent
@namespace Sandbox
<root>
<div class="header">#gameover.title</div>
<div class="body">
<div class="title">#gameover.results</div>
<div class="results">
@foreach (var player in Connection.All)
{
if( player.IsHost )
{
<div class="player">
<div class="name">@player.DisplayName:</div>
<div class="score">@HostScore</div>
</div>
}
else
{
<div class="player">
<div class="name">@player.DisplayName:</div>
<div class="score">@GuestScore</div>
</div>
}
}
@if ( Connection.All.Count < 2 )
{
<div class="player">
<div class="name">#hud.bot</div>
<div class="score">@GuestScore</div>
</div>
}
</div>
</div>
<div class="footer">
@if (Networking.IsHost)
{
<div class="button play" onclick="@(() => OnRestart())">#gameover.playagain</div>
}
else
{
<div class="button disabled">#lobby.waitingforhost</div>
}
@if (Networking.IsHost)
{
<div class="button exit" onclick="@(() => OnExit())">#gameover.tolobby</div>
}
else
{
<div class="button exit" onclick="@(() => OnExit())">#lobby.leave</div>
}
</div>
</root>
@code
{
GameObject gameManager;
int HostScore;
int GuestScore;
protected override void OnEnabled()
{
gameManager = Scene.FindAllWithTag("gamemanager").FirstOrDefault();
HostScore = gameManager.GetComponent<GameManager>().HostScore;
GuestScore = gameManager.GetComponent<GameManager>().GuestScore;
}
void OnRestart()
{
SceneLoadOptions load = new SceneLoadOptions();
load.SetScene("scenes/game.scene");
Game.ChangeScene(load);
}
void OnExit()
{
if (Networking.IsHost)
{
SceneLoadOptions load = new SceneLoadOptions();
load.SetScene("scenes/Lobby.scene");
Game.ChangeScene(load);
}
else
{
Networking.Disconnect();
Scene.LoadFromFile("scenes/Lobby.scene");
}
}
/// <summary>
/// the hash determines if the system should be rebuilt. If it changes, it will be rebuilt
/// </summary>
protected override int BuildHash() => System.HashCode.Combine( 123 );
}