UI/HUD/Elements/Toolbox.razor
@using Sandbox.UI;
@inherits Panel
@namespace PlanetMeat
<root>
@{
var hasTools = HasTools;
if (hasTools && SelectedTool is PlayerTool selTool)
{
<div class="info grow">
<span class="noshrink pm-title">#tool.@(selTool.Ident).title</span>
<div class="desc">
<span>#tool.@(selTool.Ident).desc</span>
</div>
</div>
}
<div class="gutter">
@if (hasTools)
{
<div class="toolbox">
@for (int i = 0; i < Tools.Count; i++)
{
<ToolButton ToolIndex=@i></ToolButton>
}
</div>
}
<div class="hp pm-body">
<ProgressBar class="pm-inset" CurrentProgress=@DrillCurrentHp MaxProgress=@DrillMaxHp></ProgressBar>
@if (ShowPhoenix)
{
var phCharges = Drill.PhoenixChargesRemaining;
<div class="phoenix">
<span class="mat-icon">@(phCharges > 0 ? "refresh" : "update_disabled")</span>
@if (phCharges > 0)
{
<span>@phCharges</span>
}
</div>
}
</div>
</div>
}
</root>
@code
{
private PlayerTool SelectedTool => PlayerTool.Selected;
private bool HasTools => Agenda.Current.Phase == Agenda.Phases.Wave && Tools.Any();
private bool ShowPhoenix => Drill.HasPhoenix;
private List<PlayerTool> Tools => PlayerTool.Toolbox;
private Targetable Drill => FailOnKilled.VitalTarget;
private int DrillCurrentHp => Drill?.CurrentHp ?? 0;
private int DrillMaxHp => Drill?.MaxHp ?? 0;
public override void Tick()
{
base.Tick();
for (int i = 0; i < Tools.Count; i++)
{
if (PlayerTool.IndexSlotPressed(i))
Tools[i].ToggleUse();
}
}
protected override int BuildHash() => System.HashCode.Combine(
DrillCurrentHp,
DrillMaxHp,
HasTools,
SelectedTool,
Tools.HashContents()
);
}