ui/CardTypePanel.razor
@using Sandbox;
@using Sandbox.UI;
@inherits Panel
@attribute [StyleSheet("CardTypePanel.razor.scss")]

<root>
	@{
		@* var size = Utils.Map(Manager.Instance.NumPairs, 3, 25, 100f, 42f, EasingType.Linear); *@
		var size = Utils.Map(Manager.Instance.NumPairs, 8, 20, 90f, 42f, EasingType.Linear) + (Manager.Instance.NumPairs == 20 ? 4f : 0f);
		var cardTypeIndex = 0;
	}

	@foreach(var pair in Manager.Instance.CardPairsExisting)
	{
		var cardType = pair.Key;
		var numExisting = pair.Value;
		var numMatched = Manager.Instance.CardPairsMatched.ContainsKey(cardType) ? Manager.Instance.CardPairsMatched[cardType] : 0;

		int typeUnmatchedCount = 0;

		for(int i = 0; i < numExisting; i++)
		{
			bool matched = i < numMatched;

			<CardTypePanelElement CardType=@cardType Size=@size Matched=@matched Index=@cardTypeIndex TypeIndexUnmatched=@typeUnmatchedCount />
			
			cardTypeIndex++;

			if (!matched)
				typeUnmatchedCount++;
		}
	}
</root>

@code
{
	protected override int BuildHash()
	{
		return HashCode.Combine(
			Manager.Instance.CardTypePanelHash
			// Time.Now
		);
	}
}