SantaUI.razor
@using Sandbox;
@using System;
@using Sandbox.UI;
@inherits PanelComponent
@namespace Sandbox
<root>
<div class="scoreboard">
<div class="giftbox">
<div class="gift" style="transform: rotate(@GiftAngle);"></div>
</div>
<div class="textbox">
<div class="title">Score:</div>
<div class="subtext">@Score</div>
</div>
</div>
<div class="howto">
<div class="textbox">
<div class="title">How to play</div>
<div class="subtext">A and D to move. SPACE to jump.</div>
</div>
</div>
<div class="gameover" style="opacity: @(ChristmassyGameLogic.Instance.IsPlaying ? 0 : 1)">
<div class="button" onclick=@(() => ChristmassyGameLogic.Instance.StartGame())>
<div class="title">RETRY</div>
</div>
<div class="button" onclick=@(() => Game.Close())>
<div class="title">QUIT</div>
</div>
</div>
</root>
@code
{
private float _elapsedTime = 0f;
public string Score => ChristmassyGameLogic.Instance.Points.ToString();
public string GiftAngle => (MathF.Sin( _elapsedTime / 10f) * 10f - 30f ).ToString() + "deg";
protected override void OnStart()
{
DeleteHowto();
}
protected override void OnUpdate()
{
_elapsedTime += Time.Delta * ChristmassyGameLogic.Instance.RotationSpeed;
if (_elapsedTime > 2 * MathF.PI * 10f)
{
_elapsedTime -= 2 * MathF.PI * 10f;
}
base.OnUpdate();
}
private async void DeleteHowto()
{
await Task.DelaySeconds(4f);
foreach ( var child in Panel.Children )
if ( child.HasClass( "howto" ) && !child.HasClass( "closed" ))
child.AddClass("closed");
}
/// <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( Time.Now );
}