UI/RecruitmentPanel.razor
@using Sandbox;
@using Sandbox.UI;
@using System;

@inherits SingletonWindow<RecruitmentPanel>
@namespace HC3

<root>
    <div class="row grow">
        <tabview>
            @foreach (var definition in ResourceLibrary.GetAll<StaffDefinition>())
            {
                var staff = StaffManager.Instance.OfType( definition );

                <tab [email protected] [email protected]>
                    <column>
                        <label class="title">@definition.DisplayName</label>
                        <label class="subtitle">@definition.Description</label>

                        <row class="gap">
                            <label>@(definition.HireCost.Comma()) upfront, @(definition.Wages.Comma())/day</label>
                            <button class="inline" onclick=@(() => Hire( definition ))>
                                Hire
                            </button>
                        </row>

                        <row class="gap">
                            <label class="subtitle">Currently employed: @(staff.Count()), @((definition.Wages * staff.Count()).Comma())/day</label>
                        </row>

                        <div class="column">
                            <separator />
                        </div>

                        <column class="gap center">
                            @if ( staff.Count() < 1 )
                            {
                                <button>You don't have any staff</button>
                            }

                            @foreach (var s in staff)
                            {
                                <row class="window-container">

                                    <row class="gap padding">
                                        <div class="square-icon" tooltip="Select" onclick=@(() => Select(s))>
                                            <Silkicon Icon="camera" />
                                        </div>
                                    </row>

                                    <row class="gap padding" style="align-items: center;">
                                        <label>@s.FullName</label>

                                        @if ( @s.ActionController.CurrentAction?.GetDisplay() is var display && display.HasValue )
                                        {
                                            <label class="subtitle">-</label>
                                            <row>
                                                <label class="subtitle">@display.Value.Description</label>
                                            </row>
                                        }
                                    </row>

                                    <div class="grow" />

                                    <row class="gap padding">
                                        <div class="square-icon" tooltip="Fire">
                                            <Silkicon Icon="cross" />
                                        </div>
                                    </row>
                                </row>
                            }
                        </column>
                </column>
            </tab>
            }
        </tabview>
    </div>
</root>

@code
{
    public override string Title => "Staff";
    public override string Icon => "chart_organisation";

    protected override int BuildHash() => HashCode.Combine( Time.Now );

    void Select( Staff s )
    {
        HC3.SelectionSystem.Instance.Select( s.GameObject ); 
        CameraPanning.Instance.FrameOn( s.WorldPosition );
    }

    void Hire( StaffDefinition definition )
    {
	    if ( definition is null )
		    return;

	    if ( ParkManager.Instance.Money < definition.HireCost )
		    return;

	    StaffManager.Instance.Hire( definition );
    }
}