UI/HUD/Elements/DecideEor.razor
@using Sandbox.UI;
@inherits Panel
@namespace PlanetMeat

<root>
	@if (OfferedChallenges.Count == 0)
	{
		<div class="pm-title">@EorTitle</div>
		<RoundStatsReadout></RoundStatsReadout>
		<div class="desc">@EorDesc</div>
		<div class="choices">
			<button class="click-active" onclick=@BailOut>
				<span>#button.eor.bail</span>
			</button>
			<button class="click-active" onclick=@ChooseContinue>
				<span>#button.eor.next</span>
			</button>
		</div>
	}
	else
	{
		<div class="pm-title">#eor.challenge.title</div>
		<div class="choices">
			@foreach (var challenge in OfferedChallenges)
			{
				var displayedLevel = Difficulty.Current.GetChallengeLevel(challenge.Ident) + 1;
				if (Difficulty.GetChallengeMax(challenge.Ident) == 1)
					displayedLevel = 0;

				<div class="challenge">
					<span class="chl-title">
						<span>#challenge.@(challenge.Ident).title</span>
						<span>@(displayedLevel > 0 ? displayedLevel.ToString() : "")</span>
					</span>
					<span class="chl-desc grow">#challenge.@(challenge.Ident).desc</span>
					<button class="click-active" onclick=@(() => Agenda.Current.ChooseOfferedChallenge(challenge))>
						<span>#button.challenge.choose</span>
					</button>
				</div>
			}
		</div>
	}
</root>

@code
{
	private int RoundNum => Agenda.Current.RoundNum;
	private double NextMeatBounty => Agenda.Current.NextMeatBounty;
	private List<Challenge> OfferedChallenges => Agenda.Current.OfferedChallenges;

	private string EorTitle => Game.Language.GetPhrase(
		"eor.commit.title",
		new() { ["round"] = RoundNum }
	);
	private string EorDesc => Game.Language.GetPhrase(
		"eor.commit.desc",
		new()
		{
			["nextBounty"] = NextMeatBounty,
			["failLoss"] = Agenda.Current.MeatFailureLoss,
			["bounty"] = Agenda.Current.MeatBounty,
		}
	);

	private void BailOut() => Agenda.Current.DecideEndOfRound(false);
	private void ChooseContinue() => Agenda.Current.DecideEndOfRound(true);

	protected override int BuildHash() => System.HashCode.Combine(
		NextMeatBounty,
		RoundNum,
		OfferedChallenges.HashContents()
	);
}