UI/MainPanel.razor
@using Sandbox;
@using Sandbox.UI;
@using HC3.UI
@using HC3
@inherits PanelComponent
@namespace HC3
<root>
<!-- Controls -->
<left>
<div class="column">
<div class="info-panel">
<row class="money window-container">
<img src="textures/hud/money.png" />
<label>@Cash</label>
@if ( TrendingUp )
{
<img src="textures/hud/trend_up.png" />
}
else
{
<img src="textures/hud/trend_down.png" />
}
</row>
</div>
<div class="info-panel">
<row class="window-container">
<img src="textures/hud/time.png" />
<label>@(Scene.TimeScale)x</label>
<button class="@(Speed == 0 ? "on" : "") time-control" onclick=@TogglePause>
<img src="textures/speedcontrols/pause.png" />
</button>
<button class="@(Speed == 2 ? "on" : "") time-control" onclick=@(() => SetSpeed(2))>
<img src="textures/speedcontrols/fast_forward_2.png" />
</button>
<button class="@(Speed == 3 ? "on" : "") time-control" onclick=@(() => SetSpeed(3))>
<img src="textures/speedcontrols/fast_forward_3.png" />
</button>
<button class="@(Speed == 5 ? "on" : "") time-control" onclick=@(() => SetSpeed(5))>
<img src="textures/speedcontrols/fast_forward_5.png" />
</button>
</row>
</div>
</div>
</left>
<middle>
<div class="window-container">
<button class="square-button" tooltip="Paths" onclick=@(() => PathWindow.Show())>
<img src="textures/hud/road.png" />
</button>
<button class="square-button" tooltip="Catalog" onclick=@(() => BuildingPanel.Show())>
<img src="textures/hud/ferris_wheel.png" />
</button>
<button class="square-button" onclick=@(() => FeaturesPanel.Show()) tooltip="Decorations">
<img src="textures/hud/tree.png" />
</button>
<CanvasButton Icon="textures/hud/terrain.png" Canvas="TerraformCanvas" tooltip="Terrain" />
<button class="square-button" onclick=@(() => RecruitmentPanel.Show()) tooltip="Staff">
<img src="textures/hud/lanyard.png" />
</button>
<separator />
<button onclick=@StartDestroying class="square-button @(IsDestroying ? "selected" : "")" tooltip="Bulldozer">
<img src="textures/hud/bulldozer.png" />
</button>
<separator />
<CanvasButton Icon="textures/hud/area.png" Canvas="AreaCanvas" tooltip="Area Tool" />
<button class="square-button" onclick=@(() => AnimalsPanel.Show()) tooltip="Animals">
<img src="textures/hud/pets.png" />
</button>
</div>
</middle>
<right>
<div class="column">
<div class="info-panel">
<row class="window-container">
<Silkicon Icon="star" />
<label>@Rating</label>
</row>
<row class="window-container">
<Silkicon Icon="user" />
<label>@VisitorCount</label>
</row>
</div>
</div>
<div class="column">
<CanvasButton Icon="textures/hud/grid.png" Canvas="ZoneCanvas" tooltip="Zoning Tool" />
<separator />
<Button class="square-button" onclick="@(() => ParkManagement.Show())" tooltip="Park Management">
<img src="textures/hud/suit.png" />
</Button>
</div>
</right>
</root>
@code
{
public string Cash => ($"{(ParkManager.Instance?.Money ?? 0):C0}").Trim( '$' );
public string VisitorCount => GuestManager.Instance?.GuestCount.ToString();
public string Rating => (ParkManager.Instance?.Rating ?? 0).ToString("0.0");
float Speed => Scene.TimeScale;
private bool IsDestroying => BuildingPlacer.Instance?.IsDestroying ?? false;
protected override int BuildHash() => System.HashCode.Combine(Cash, VisitorCount, Rating, LastCash, TrendingUp, IsDestroying);
protected override void OnUpdate()
{
base.OnUpdate();
if ( Input.Keyboard.Pressed( "1" ) )
{
BaseCanvas.ToggleCanvas( "PathCanvas" );
}
else if ( Input.Keyboard.Pressed( "2" ) )
{
BuildingPanel.Show();
}
else if ( Input.Keyboard.Pressed( "3" ) )
{
FeaturesPanel.Show();
}
else if ( Input.Keyboard.Pressed( "4" ) )
{
BaseCanvas.ToggleCanvas( "TerraformCanvas" );
}
else if ( Input.Keyboard.Pressed( "5" ) )
{
RecruitmentPanel.Show();
}
else if ( Input.Keyboard.Pressed( "6" ) )
{
StartDestroying();
}
UpdateTrendArrow();
}
private RealTimeSince TimeSinceTrendUpdated;
private int LastCash;
private bool TrendingUp;
void UpdateTrendArrow()
{
if (TimeSinceTrendUpdated > 30)
{
var currentCash = ParkManager.Instance?.Money ?? 0;
TrendingUp = LastCash > currentCash;
LastCash = currentCash;
TimeSinceTrendUpdated = 0;
}
}
void StartDestroying()
{
BaseCanvas.CloseAllCanvases();
var buildingPlacer = BuildingPlacer.Instance;
if (!buildingPlacer.IsValid()) return;
buildingPlacer.IsDestroying = !buildingPlacer.IsDestroying;
if ( buildingPlacer.IsDestroying )
{
Sound.Play( "bulldozer_activate" );
}
}
void StartLandPurchase()
{
BaseCanvas.CloseAllCanvases();
var buildingZoner = BuildingZone.Instance;
if (!buildingZoner.IsValid()) return;
buildingZoner.TogglePurchaseMode();
}
void TogglePause()
{
DayNightController.Instance?.TogglePause();
}
void ResetSpeed()
{
DayNightController.Instance?.ResetSpeed();
}
void SetSpeed(int speed)
{
if (Scene.TimeScale == speed)
DayNightController.Instance?.ResetSpeed();
else
DayNightController.Instance?.SetSpeed(speed);
}
}