UI/HUD/Elements/ToolButton.razor
@using Sandbox.UI;
@inherits Panel
@namespace PlanetMeat
<root>
<button onmousedown=@ToggleTool class="click-active @ToolPressed @ToolDisabled mat-icon mat-icon-lg">
@(Tool.Icon)
</button>
@{
var cdt = CooldownText;
if (cdt != "")
{
<span class="ontop cooldown">
@cdt
</span>
}
var hotkey = Hotkey;
if (hotkey is not null && hotkey.Length > 0)
{
<span class="ontop hotkey">
<span class="badge">@hotkey</span>
</span>
}
}
</root>
@code
{
public int ToolIndex { get; set; }
private PlayerTool Tool => field ??= PlayerTool.Toolbox[ToolIndex];
private string Hotkey => Keybinds.Current.GetKeycode(PlayerTool.IndexToSlotName(ToolIndex));
private float CooldownRemaining => Tool?.CooldownRemaining ?? 0.0f;
private string CooldownText
{
get
{
var cd = CooldownRemaining;
if (cd < 0.05f)
return "";
if (cd >= 9.95f)
return ((int)cd).ToString();
return cd.ToString("N1");
}
}
private void ToggleTool() => Tool?.ToggleUse();
private string ToolPressed => Tool.IsSelected ? "pressed" : "";
private string ToolDisabled => Tool.IsSelectable ? "" : "disabled";
protected override int BuildHash() => System.HashCode.Combine(
Tool,
CooldownRemaining,
Tool.IsSelected
);
}