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