ui/Panels/DifficultyPanel.razor
@using Sandbox;
@using Sandbox.UI;
@namespace SS1
@inherits Panel
@attribute [StyleSheet("DifficultyPanel.razor.scss")]

<root>
	@{
		int diff = DifficultyTracker.Instance.Difficulty;
	}
	<div class="difficulty_button @(diff <= Manager.MinDifficulty ? "disabled_button" : "")" onclick="@(() => ButtonLeft())">
		@("-")
	</div>

	<div class="middle">
		<div class="difficulty_label" style="color:@(Manager.GetDifficultyLabelColor(diff).Rgba);">@Manager.GetNameForDifficulty(diff)</div>
		<div class="description">@Manager.GetDescriptionForDifficulty(diff)</div>
	</div>

	<div class="difficulty_button @(diff >= Manager.MaxDifficulty ? "disabled_button" : (MenuManager.Instance.HighestDifficultyBeaten >= diff) ? "" : "locked_button" )" style="opacity:@(diff == Manager.MaxDifficulty ? 0f : 1f);" onclick="@(() => ButtonRight())">
		@((MenuManager.Instance.HighestDifficultyBeaten >= diff ? (diff == Manager.MaxDifficulty ? "x" : "+") : " "))
	</div>
</root>

@code
{
	protected override int BuildHash()
	{
		return HashCode.Combine(
			DifficultyTracker.Instance.Difficulty,
			MenuManager.Instance.HighestDifficultyBeaten
		);
	}

	void ButtonLeft()
	{
		DifficultyTracker.Instance.Difficulty = Math.Max(DifficultyTracker.Instance.Difficulty - 1, Manager.MinDifficulty);
		Sandbox.Services.Stats.SetValue("selected_difficulty", DifficultyTracker.Instance.Difficulty);

		MenuManager.Instance.SetDifficulty(DifficultyTracker.Instance.Difficulty);
	}

	void ButtonRight()
	{
		DifficultyTracker.Instance.Difficulty = Math.Min(DifficultyTracker.Instance.Difficulty + 1, Manager.MaxDifficulty);
		Sandbox.Services.Stats.SetValue("selected_difficulty", DifficultyTracker.Instance.Difficulty);

		MenuManager.Instance.SetDifficulty(DifficultyTracker.Instance.Difficulty);
	}
}