UI/Player/FlightControlsHint.razor
@using Sandbox.UI
@inherits Panel
<style>
FlightControlsHint {
position: absolute;
right: 72px;
top: 72%;
transform: translateY(-50%);
flex-direction: column;
gap: 6px;
padding: 12px 14px;
background-color: rgba(0, 0, 0, 0.34);
border-left: 2px solid rgba(120, 220, 255, 0.4);
border-right: 2px solid rgba(120, 220, 255, 0.4);
opacity: 0;
transition: opacity 0.2s ease;
pointer-events: none;
.title {
font-family: "Wallpoet";
font-size: 22px;
color: rgba(160, 240, 255, 0.95);
margin-bottom: 4px;
}
.row {
flex-direction: row;
justify-content: space-between;
gap: 16px;
.label {
font-family: "AzeretMono-Medium";
font-size: 18px;
color: rgba(230, 250, 255, 0.9);
}
img{
width: 52px;
aspect-ratio: 1;
}
.key {
min-width: 52px;
justify-content: center;
align-items: center;
padding: 2px 8px;
background-color: rgba(0, 0, 0, 0.5);
border-left: 1px solid rgba(120, 220, 255, 0.35);
border-right: 1px solid rgba(120, 220, 255, 0.35);
color: rgba(115, 220, 255, 1);
}
}
&.open {
opacity: 1;
}
}
</style>
<root class="@(_open ? "open" : "")">
<label class="title">FLIGHT CONTROLS</label>
@if ( !Input.UsingController )
{
<div class="row"><label class="label">Look</label><img src="ui/glyphs/default/mouse.svg" class="key" /></div>
<div class="row"><label class="label">Move</label><img src="ui/glyphs/default/move.svg" class="key" /></div>
}
else
{
<div class="row"><label class="label">Move</label><img src="ui/glyphs/xbox/leftjoystickbutton.svg" class="key" /></div>
<div class="row"><label class="label">Look</label><img src="ui/glyphs/xbox/rightjoystickbutton.svg" class="key" /></div>
}
<div class="row"><label class="label">Attack</label><InputHint Action="attack1" class="key" /></div>
@if ( !Input.UsingController )
{
<div class="row"><label class="label">Boost</label><img src="ui/glyphs/default/shift.svg" class="key" /></div>
<div class="row"><label class="label">Brake</label><InputHint Action="back" class="key" /></div>
}
else
{
<div class="row"><label class="label">Boost</label><InputHint Action="Run" class="key" /></div>
<div class="row"><label class="label">Brake</label><img src="ui/glyphs/xbox/rightsticky.svg" class="key" /></div>
}
<div class="row"><label class="label">Swap Ship</label><InputHint Action="menu" class="key" /></div>
</root>
@code
{
private bool _open;
private bool _shownOnce;
private TimeUntil _hideAt;
public override void Tick()
{
base.Tick();
var pawn = LocalPlayer.Pawn;
if ( pawn == null || !pawn.IsValid() ) return;
if ( !_shownOnce && pawn.IsAlive )
{
_shownOnce = true;
_open = true;
_hideAt = 50f;
}
if ( _open && _hideAt )
_open = false;
}
protected override int BuildHash() => HashCode.Combine(_open, Input.UsingController );
}