Debugging/StreamerDebugUI.razor
@using Sandbox;
@using Sandbox.UI;
@inherits PanelComponent
@namespace Sandbox
@*
On-screen overlay: a cheat-sheet of the chat commands, the poop scoreboard, and - when we're connected
to a stream - some live stats read straight off the static Streamer class.
*@
<root>
<div class="Information">
<ScoreBoard></ScoreBoard>
@* The commands viewers can type in chat. These map to StreamGameManager / StreamPlayer. *@
<div class="help">
<div><div class="cmd">spawn</div><div class="action">Spawn / respawn your avatar</div></div>
<div><div class="cmd">go</div><div class="action">Walk forward</div></div>
<div><div class="cmd">back</div><div class="action">Walk backward</div></div>
<div><div class="cmd">move</div><div class="action">Wander somewhere random</div></div>
<div><div class="cmd">left</div><div class="action">Turn left</div></div>
<div><div class="cmd">right</div><div class="action">Turn right</div></div>
<div><div class="cmd">turn</div><div class="action">Turn around</div></div>
<div><div class="cmd">duck</div><div class="action">Toggle ducking</div></div>
<div><div class="cmd">poop</div><div class="action">Poop (scores a point)</div></div>
</div>
@* Streamer.IsActive is true once we're connected to a service like Twitch. *@
@if ( Streamer.IsActive )
{
<div class="help">
<div>
<div class="cmd">Viewers</div>
<div class="action">@Streamer.ViewerCount</div>
</div>
<div>
<div class="cmd">Title</div>
<div class="action">@Streamer.Title</div>
</div>
<div>
<div class="cmd">Length</div>
<div class="action">@((System.DateTime.Now - Streamer.StartedAt).Humanize( 1 ))</div>
</div>
</div>
}
else
{
<div>Not Connected</div>
}
</div>
</root>
@code
{
/// <summary>
/// Rebuild whenever the connection state or viewer count changes so the stats stay current.
/// </summary>
protected override int BuildHash() => System.HashCode.Combine( Streamer.IsActive, Streamer.ViewerCount, Streamer.Viewers );
}