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));
}