ui/Hud.razor
@using Sandbox;
@using Sandbox.UI;
@inherits PanelComponent
@{
var manager = Manager.Instance;
}
<root style="cursor: @manager.GetCursor(); pointer-events: @(manager.IsMoveResolving ? "all" : "none");">
@if(manager.ShouldShowOverlayColor)
{
var opacity = Utils.Map(manager.TimeSinceOverlayStart, 0f, 0.1f, 0f, 1f, EasingType.SineOut) * Utils.Map(manager.TimeSinceOverlayStart, 0f, manager.OverlayTime, 1f, 0f, EasingType.SineIn);
<div class="overlay" style="background-color: @(manager.OverlayColor.Rgba); opacity:@opacity;"></div>
}
<SettingsButton />
@if(manager.IsMuted)
{
<MuteButton />
}
@if(manager.GameState == GameState.Menu)
{
if(manager.IsSettingsOpen)
{
<SettingsPanel2 />
}
else if(manager.IsLeaderboardOpen)
{
<LeaderboardPanel />
}
else
{
<MainMenuPanel />
}
}
else
{
<HealthBar />
<TimeBar />
<MoneyPanel />
<div class="upper_row">
<RelicPanel />
@if(manager.GameState != GameState.Victory && manager.GameState != GameState.Failure)
{
<LevelLabel />
}
</div>
@if(manager.GameState != GameState.Victory && manager.GameState != GameState.Failure)
{
<RunTimerLabel />
}
if(manager.IsSettingsOpen)
{
<SettingsPanel2 />
}
else
{
@if(manager.GameState == GameState.Victory || manager.GameState == GameState.Failure)
{
<FinalScorePanel />
}
@if(manager.GameState == GameState.BuyPhase)
{
<BuyPhasePanel />
}
}
}
@if(manager.IsLevelActive)
{
<CardTypePanel />
@if(manager.HoveredPanelType != CardType.None)
{
if(manager.IsHoveringBounty)
{
<BountyTooltip [email protected] style="left:@(Mouse.Position.x * Panel.ScaleFromScreen - 250)px; top:@(Math.Min(Mouse.Position.y, Screen.Height - 200f * Panel.ScaleToScreen) * Panel.ScaleFromScreen - 10f)px;" />
}
else
{
<CardTypeTooltip [email protected] style="left:@(Mouse.Position.x * Panel.ScaleFromScreen - 335)px; top:@(Math.Min(Mouse.Position.y, Screen.Height - 240f * Panel.ScaleToScreen) * Panel.ScaleFromScreen - 10f)px;" />
}
}
@if(manager.EventMessageStack.Count > 0)
{
<MessageContainerPanel></MessageContainerPanel>
}
}
@if(manager.HoveredRelicType != RelicType.None)
{
var relic = Manager.Instance.GetRelic(manager.HoveredRelicType);
if( relic != null)
{
<RelicTooltip [email protected] [email protected] [email protected] style="left:@(Mouse.Position.x * Panel.ScaleFromScreen + 20)px; top:@(Math.Min(Mouse.Position.y, Screen.Height - 175f * Panel.ScaleToScreen) * Panel.ScaleFromScreen + 20f)px;" />
}
}
@if(manager.ForceCursor)
{
<div class="cursor-forcer"></div>
}
@if(manager.IsFadingIn)
{
<div class="fader" style="opacity:@(Utils.Map(manager.TimeSinceStartFadingIn, 0f, Manager.FADE_IN_TIME, 1f, 0f));"></div>
}
</root>
@code
{
protected override int BuildHash()
{
var manager = Manager.Instance;
var overlayHash = manager.ShouldShowOverlayColor ? manager.TimeSinceOverlayStart.Relative : 0f;
var fadeInHash = manager.IsFadingIn ? manager.TimeSinceStartFadingIn.Relative : 0f;
return HashCode.Combine(
Mouse.Position, // todo: only needed if a tooltip is showing
manager.GameState,
overlayHash,
HashCode.Combine(manager.IsMoveResolving, manager.ForceCursor, manager.CursorClockNum),
fadeInHash,
manager.IsSettingsOpen,
manager.IsMuted
);
}
}