UI/BuildModePanel.razor
@using HC3.Terraforming;
@using Sandbox;
@using Sandbox.UI;
@inherits PanelComponent
@namespace HC3
<root>
<div class="square-button help" onclick="@(() => Toggle())">
<img src="textures/hud/info.png" />
</div>
@if ( BuildingPlacer.Instance?.IsDestroying ?? false )
{
<div class="removal">
<div class="striped" />
</div>
<div class="removal bottom">
<div class="striped" />
</div>
}
@if ( !IsOpen ) return;
@if ( ModeName != "Camera" )
{
<label class="return">Press ESC to cancel placement.</label>
}
<div class="container window-container">
<img class="huge" src="@(ModeName == "Camera" ? "textures/hud/camera.png" : "textures/hud/hammer.png")" />
<column>
<label class="heading">@ModeName @ItemName</label>
@if ( BuildingPlacer.Instance.PlacingResource is IPlacementObject )
{
<row class="control">
<label>
Rotate Left
</label>
<label>
Q
</label>
</row>
<row class="control">
<label>
Rotate Right
</label>
<label>
E
</label>
</row>
<row class="control">
<label>
Pitch Up
</label>
<label>
Shift + Q
</label>
</row>
<row class="control">
<label>
Pitch Down
</label>
<label>
Shift + E
</label>
</row>
<row class="control">
<label>
Height
</label>
<label>
Shift + Mouse Wheel
</label>
</row>
<row class="control">
<label>
Snap to Grid
</label>
<label>
Ctrl
</label>
</row>
<row class="control">
<label>
Place
</label>
<label>
Left Click
</label>
</row>
}
else if ( Terraformer.Instance?.IsTerraforming is true )
{
<row class="control">
<label>
Change Brush Size
</label>
<label>
Shift + Mouse Wheel
</label>
</row>
<row class="control">
<label>
Terraform
</label>
<label>
Left Click + Drag
</label>
</row>
}
else
{
<row class="control">
<label>
Move Camera
</label>
<label>
WASD / Mouse Edge
</label>
</row>
<row class="control">
<label>
Move Camera
</label>
<label>
Alt + Middle Mouse Drag
</label>
</row>
<row class="control">
<label>
Rotate Camera
</label>
<label>
Middle Mouse Drag
</label>
</row>
<row class="control">
<label>
Zoom
</label>
<label>
Mouse Wheel
</label>
</row>
}
</column>
</div>
</root>
@code
{
private string ItemName { get; set; }
private string ModeName { get; set; }
bool IsOpen = true;
protected override void OnUpdate()
{
SetClass("placing", BuildingPlacer.Instance?.IsPlacing ?? false);
SetClass("terraforming", Terraformer.Instance?.IsTerraforming ?? false);
SetClass("pathing", PathBuilder.Instance?.Enabled ?? false);
SetClass("camera", BuildingPlacer.Instance?.IsPlacing == false && Terraformer.Instance?.IsTerraforming == false && PathBuilder.Instance?.Enabled == false);
if ( BuildingPlacer.Instance.PlacingResource.IsValid() )
{
ModeName = "Placing";
ItemName = BuildingPlacer.Instance.PlacingResource.Title;
}
else if (PathBuilder.Instance?.Enabled ?? false)
{
ModeName = "Placing path";
ItemName = "";
}
else if (Terraformer.Instance?.IsTerraforming ?? false)
{
ModeName = "Terraforming with";
ItemName = Terraformer.Instance?.CurrentMode?.Title;
}
else
{
ModeName = "Camera";
ItemName = "";
}
}
void Toggle()
{
IsOpen = !IsOpen;
}
protected override int BuildHash() => System.HashCode.Combine(BuildingPlacer.Instance?.IsPlacing, BuildingPlacer.Instance?.PlacingResource, ItemName, PathBuilder.Instance?.Enabled, BuildingPlacer.Instance?.IsDestroying);
}