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);
}