MenuHud.razor
@using Sandbox;
@using Sandbox.UI;
@inherits PanelComponent
@namespace BottomsUp
<root style="width:100%;height:100%;position:absolute;top:0;left:0;">
@if ( Menu.State == MenuManager.MenuState.Menu || Menu.State == MenuManager.MenuState.FadingOut )
{
<div class="menu-screen @(Menu.State == MenuManager.MenuState.FadingOut ? "fading" : "")"
style="width:100%;height:100%;position:absolute;top:0;left:0;display:flex;flex-direction:row;align-items:center;justify-content:center;background-color:rgba(0,0,0,0.75);pointer-events:all;">
<div style="position:relative;">
<div class="menu-panel"
style="position:relative;background-color:#f4e4c1;border:5px solid #4a2f1c;border-radius:14px;padding:56px 64px 48px 64px;min-width:900px;display:flex;flex-direction:column;align-items:stretch;box-shadow:0 12px 32px rgba(0,0,0,0.7);pointer-events:all;">
<div class="play-button" onclick="@(() => Menu.StartGame())"
style="width:100%;display:flex;align-items:center;justify-content:center;background-color:#c99a3b;color:white;font-size:34px;font-weight:bold;padding:20px;border:3px solid #4a2f1c;border-radius:10px;cursor:pointer;pointer-events:all;box-sizing:border-box;margin-bottom:28px;">
Play
</div>
<div class="menu-body" style="display:flex;flex-direction:row;justify-content:space-between;">
<div class="menu-left" style="display:flex;flex-direction:column;width:360px;">
<div class="description" style="display:flex;flex-direction:column;margin-bottom:28px;">
<div style="color:#4a2f1c;font-size:18px;line-height:1.5;">Control your hands and arm to drink your fill!</div>
<div style="color:#4a2f1c;font-size:18px;line-height:1.5;margin-top:6px;">Careful though, each drink seems to have an effect on you...</div>
</div>
<!-- Background Audio Toggle -->
<div class="audio-toggle" onclick="@(() => Menu.ToggleMute())"
style="display:flex;flex-direction:row;align-items:center;cursor:pointer;pointer-events:all;margin-bottom:12px;">
<div class="checkbox-box" style="width:26px;height:26px;border:2px solid #4a2f1c;background-color:white;margin-right:12px;display:flex;align-items:center;justify-content:center;">
@if ( !Menu.IsMuted )
{
<div style="width:16px;height:16px;background-color:#4a2f1c;"></div>
}
</div>
<div style="color:#4a2f1c;font-size:22px;">Background audio</div>
</div>
<!-- Talking Audio Toggle -->
<div class="audio-toggle" onclick="@(() => Menu.ToggleTalkingMute())"
style="display:flex;flex-direction:row;align-items:center;cursor:pointer;pointer-events:all;">
<div class="checkbox-box" style="width:26px;height:26px;border:2px solid #4a2f1c;background-color:white;margin-right:12px;display:flex;align-items:center;justify-content:center;">
@if ( !Menu.IsTalkingMuted )
{
<div style="width:16px;height:16px;background-color:#4a2f1c;"></div>
}
</div>
<div style="color:#4a2f1c;font-size:22px;">Talking audio</div>
</div>
</div>
<div class="menu-right" style="display:flex;flex-direction:column;align-items:center;margin-left:48px;">
<div class="howto-title" style="font-size:26px;color:#4a2f1c;font-weight:bold;margin-bottom:16px;">How to play</div>
<div class="howto-row" style="display:flex;flex-direction:row;">
<div class="howto-item" style="display:flex;flex-direction:column;align-items:center;margin:0 32px 0 20px;">
<div style="position:relative;width:110px;height:160px;">
<div class="mouse-icon" style="width:110px;height:160px;border:4px solid #4a2f1c;border-radius:55px;background-color:white;"></div>
<div style="position:absolute;top:-30px;left:50%;transform:translateX(-50%);font-size:24px;color:#4a2f1c;">▲</div>
<div style="position:absolute;bottom:-30px;left:50%;transform:translateX(-50%);font-size:24px;color:#4a2f1c;">▼</div>
<div style="position:absolute;left:-30px;top:50%;transform:translateY(-50%);font-size:24px;color:#4a2f1c;">◀</div>
<div style="position:absolute;right:-30px;top:50%;transform:translateY(-50%);font-size:24px;color:#4a2f1c;">▶</div>
</div>
<div class="howto-label" style="color:#4a2f1c;font-size:18px;margin-top:10px;">move hand</div>
</div>
<div class="howto-item" style="display:flex;flex-direction:column;align-items:center;margin:0 20px;">
<div class="mouse-icon" style="width:110px;height:160px;border:4px solid #4a2f1c;border-radius:55px;position:relative;overflow:hidden;background-color:white;">
<div class="mouse-fill" style="position:absolute;top:0;left:0;width:50%;height:45%;background-color:#4a2f1c;"></div>
</div>
<div class="howto-label" style="color:#4a2f1c;font-size:18px;margin-top:10px;">tilt left</div>
</div>
<div class="howto-item" style="display:flex;flex-direction:column;align-items:center;margin:0 20px;">
<div class="mouse-icon" style="width:110px;height:160px;border:4px solid #4a2f1c;border-radius:55px;position:relative;overflow:hidden;background-color:white;">
<div class="mouse-fill" style="position:absolute;top:0;right:0;width:50%;height:45%;background-color:#4a2f1c;"></div>
</div>
<div class="howto-label" style="color:#4a2f1c;font-size:18px;margin-top:10px;">tilt right</div>
</div>
</div>
<div class="howto-caption" style="color:#4a2f1c;font-size:18px;margin-top:16px;text-align:center;">Do your best to drink your fill!</div>
</div>
</div>
</div>
<img class="menu-logo" src="/ui/logo.png"
style="position:absolute;top:-70px;left:50%;transform:translateX(-50%);max-width:300px;max-height:140px;" />
</div>
</div>
}
</root>
@code
{
[Property] public MenuManager Menu { get; set; }
protected override int BuildHash()
{
// Added Menu?.IsTalkingMuted so the UI knows to update the checkmark when clicked
return System.HashCode.Combine( Menu?.State, Menu?.IsMuted, Menu?.IsTalkingMuted );
}
}