UI/Panels/PlacingHud.razor
@using Sandbox;
@using Sandbox.UI;
@namespace Battlebugs
@inherits Panel
@attribute [StyleSheet]
<root>
@if (!BoardManager.Local.IsValid()) return;
<div class="bug-inventory">
<div class="container">
<label class="header">Bug Inventory</label>
<div class="content">
@if (true)
{
@foreach (var bugItem in BoardManager.Local.BugInventory.OrderBy(x => x.Key.SegmentCount))
{
<div class="bug-inventory-item">
<div class="bug">
@for (int i = 0; i < bugItem.Key.SegmentCount; i++)
{
<img src=@GetIcon(bugItem.Key, i) />
}
</div>
<label>x@(bugItem.Value)</label>
</div>
}
}
</div>
</div>
</div>
<div class="footer">
@if (GameManager.Instance.Boards.Any(x => x.IsReady))
{
<label>@(BoardManager.Local.IsReady ? "Waiting for opponent..." : "Opponent is ready...")</label>
}
<div class="buttons">
<button class="place-for-me" onclick=@(() => BoardManager.Local.SetupBoardRandomly())>Place Bugs For Me</button>
<button class="clear-bugs" onclick=@(() => BoardManager.Local.ClearAllBugs())>Reset Bugs</button>
<button class="@ReadyClasses()" Tooltip=@ReadyTooltip() onclick=@ToggleReady>@ReadyText()</button>
</div>
</div>
</root>
@code
{
string ReadyClasses()
{
string classes = "ready-up";
if (BoardManager.Local?.BugInventory?.Any(x => x.Value > 0) ?? true)
{
classes += " disabled";
}
return classes;
}
string ReadyTooltip()
{
if (BoardManager.Local?.BugInventory?.Any(x => x.Value > 0) ?? true)
{
return "You must place all bugs before you can ready up!";
}
return "";
}
string ReadyText()
{
return BoardManager.Local.IsReady ? "Un-Ready" : "Ready";
}
void ToggleReady()
{
if (BoardManager.Local?.BugInventory?.Any(x => x.Value > 0) ?? true) return;
BoardManager.Local.ToggleReady();
}
string GetIcon(BugResource bug, int index)
{
if (index == 0) return bug.GetHeadIcon();
if (index == bug.SegmentCount - 1) return bug.GetTailIcon();
return bug.GetBodyIcon();
}
protected override int BuildHash() => System.HashCode.Combine(BoardManager.Local, BoardManager.Local?.BugInventory.Sum(x => x.Value), BoardManager.Local?.IsReady, GameManager.Instance.Boards.Any(x => x.IsReady));
}