1
0
Fork 0
polaris-task-force/src/lib/base/staffingDefaults.ts
Z8MB1E b2718b3633 feat(base): add npc staffing and labor classification collections
Adds the npc-staffing and labor-classifications collections, a shared staffing field factory applied to both structure blueprints (Staffing Defaults group) and game structure instances, blueprint-derived staffing defaults on game structure create, staff-hiring toggles on Game Rules, and their database migrations.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-09-06 01:24:08 -04:00

27 lines
1 KiB
TypeScript

import type { Structure } from "@/payload-types";
export type StaffingDefaults = {
readonly maintenanceCost: number;
readonly laborRequirements: NonNullable<Structure["laborRequirements"]>;
readonly staffPositions: NonNullable<Structure["staffPositions"]>;
};
export function staffingDefaultsFromBlueprint(blueprint: Structure): StaffingDefaults {
return {
maintenanceCost: blueprint.maintenanceCost ?? 0,
laborRequirements: (blueprint.laborRequirements ?? []).map((requirement) => ({
classification:
typeof requirement.classification === "object"
? requirement.classification.id
: requirement.classification,
requiredHeadcount: requirement.requiredHeadcount,
maxHeadcount: requirement.maxHeadcount ?? null,
enforcedSalary: requirement.enforcedSalary ?? null,
})),
staffPositions: (blueprint.staffPositions ?? []).map((position) => ({
positionType: position.positionType,
max: position.max ?? null,
enforcedSalary: position.enforcedSalary ?? null,
})),
};
}