UI/Window/ParkManagement.razor
@using Sandbox
@using Sandbox.UI
@using HC3

@namespace HC3.UI
@inherits Window

<root>
	<tabview>
		<tab Icon="money_add" Title="Finance">
			<div class="table">
				<row class="head">Income</row>
				@foreach (var statName in GetEarnedStats())
				{
					<row>
						<label class="col name">@statName.ToTitleCase()</label>
						<label class="col value earned">
							@($"+{Stats.Get($"money_earned.{statName}").ToString("C")}")
						</label>
					</row>
				}
				<row class="head">Spendings</row>
				@foreach (var statName in GetSpentStats())
				{
					<row>
						<label class="col name">@statName.ToTitleCase()</label>
						<label class="col value spent">
							@($"-{Stats.Get($"money_spent.{statName}").ToString("C")}")
						</label>
					</row>
				}
				<row class="head">Total</row>
				<row>
					@if (true)
					{
						var total = Stats.Get("money_earned") - Stats.Get("money_spent");
						<label class="col name">Total Earnings</label>
						<label class="col value @(total > 0 ? "earned" : "spent")">
							@if (total > 0)
							{
								@($"{total.ToString("C")}")
							}
							else
							{
								@($"-{total.ToString("C")}")
							}
						</label>
					}
				</row>
			</div>

			<row>
				<label>Daily Income: @ParkManager.Instance.DailyIncome.ToString("C")</label>
			</row>

			<row>
				<label>Best Daily Income: @Stats.Get("park.max_daily_income").ToString("C")</label>
			</row>
		</tab>
		<tab Icon="tab_go" Title="Admission">
			<div class="row">
				<label>Admission Fee</label>
				<TextEntry Numeric=@(true) Prefix="@GameUtils.Currency" Text=@(ParkManager.Instance.AdmissionFee.ToString()) OnTextEdited=@((string x) => { ParkManager.Instance.AdmissionFee = int.Parse(x); }) />
			</div>
		</tab>
		<tab Icon="group" Title="Guests">
			<GuestInfoPanel />
			<scrolllist style="height: 250px">
			@foreach (var guest in GuestManager.Instance.GuestList)
			{
				<Button [email protected] onclick="@(() => HC3.SelectionSystem.Instance.Select( guest.GameObject ))"</Button>
			}
			</scrolllist>
		</tab>
		<tab Icon="cake" Title="Rides">
			<RideInfoPanel/>
			<scrolllist style="height: 250px">
			@foreach (var building in Scene.GetAll<BasicRide>())
			{
				<Button [email protected] onclick="@(() => HC3.SelectionSystem.Instance.Select( building.GameObject ))"</Button>
			}
			</scrolllist>
		</tab>
	</tabview>
	<div class="footer">
		<div class="button" onclick=@(() => Rename()) tooltip="Rename">
            <Silkicon Icon="tag_blue_edit" />
        </div>
		<DropDown Value:[email protected]/>
	</div>
</root>

@code
{
	public override string Title => ParkManager.Instance.Name;
	public override object Key => "ParkManagement";
	public override string Icon => "information";

	static ParkManagement instance;

	private void Rename()
	{
		var window = new RenameDialog($"Rename {ParkManager.Instance.Name}", ParkManager.Instance.Name, (s) => ParkManager.Instance.Name = s );
		OpenSubwindow(window);
	}

	IEnumerable<string> GetEarnedStats()
	{
		var stats = Stats.Current.Values;
		foreach (var stat in stats)
		{
			if (stat.Key.StartsWith("money_earned."))
			{
				var parts = stat.Key.Split('.');
				if (parts.Length == 1) continue;
				yield return parts[1];
			}
		}
	}

	IEnumerable<string> GetSpentStats()
	{
		var stats = Stats.Current.Values;
		foreach (var stat in stats)
		{
			if (stat.Key.StartsWith("money_spent."))
			{
				var parts = stat.Key.Split('.');
				if (parts.Length == 1) continue;
				yield return parts[1];
			}
		}
	}

	public static void Show( bool openAtCursor = false )
	{
		if (instance.IsValid())
		{
			WindowManager.Instance.Open(instance);
			return;
		}

		instance = new ParkManagement();
		WindowManager.Instance.Open(instance);

		if ( !openAtCursor )
		{
			instance.SetPosition(new Vector2(Screen.Size.x - 16, Screen.Size.y / 2.0f), Window.ScreenAlignment.CenterRight);
		}
	}
}