UI/Warmup.razor
@using Sandbox;
@using Sandbox.UI;
@inherits PanelComponent
@implements ILocalPlayerEvent
<root>
<div class="number">@Number</div>
</root>
@code
{
string lastNumber = "";
protected override int BuildHash() => HashCode.Combine(Number);
void ILocalPlayerEvent.OnJump()
{
Panel.FlashClass("jump", 0.1f);
}
public string Number
{
get
{
var secondsLeft = GameSettings.WarmupTime - GameManager.Current.TimeElapsed;
if (secondsLeft < 0.5f) return "GO";
return secondsLeft.ToString("n0");
}
}
protected override void OnUpdate()
{
base.OnUpdate();
var isHidden = GameManager.Current.TimeElapsed > GameSettings.WarmupTime || GameSettings.GameLoop == false;
if (string.IsNullOrEmpty(lastNumber)) lastNumber = Number;
if (!isHidden && Number != lastNumber)
{
lastNumber = Number;
Panel.FlashClass("change", 0.1f);
Sound.Play("clock-tick");
if (Number == "GO")
{
Sound.Play("game-notification-1");
}
}
Panel.SetClass("visible", !isHidden);
}
}