Add reserve drill assignment API

This commit is contained in:
2026-07-09 13:38:20 +09:00
parent 053536fd20
commit 02578e2f28
2 changed files with 42 additions and 0 deletions

View File

@@ -628,6 +628,27 @@ export function setCampaignReserveTrainingFocus(focusId: CampaignReserveTraining
return cloneCampaignState(state);
}
export function setCampaignReserveTrainingAssignment(unitId: string, focusId?: CampaignReserveTrainingFocusId) {
const state = ensureCampaignState();
const normalizedUnitId = normalizeKeyString(unitId);
const rosterUnitIds = normalizedRosterUnitIds(state.roster);
const allowedUnitIds = rosterUnitIds.size > 0 ? rosterUnitIds : undefined;
if (!normalizedUnitId || (allowedUnitIds && !allowedUnitIds.has(normalizedUnitId))) {
return cloneCampaignState(state);
}
const assignments = normalizeCampaignReserveTrainingAssignments(state.reserveTrainingAssignments, allowedUnitIds);
if (focusId && isReserveTrainingFocusId(focusId)) {
assignments[normalizedUnitId] = focusId;
} else {
delete assignments[normalizedUnitId];
}
state.reserveTrainingAssignments = assignments;
state.updatedAt = new Date().toISOString();
persistCampaignState(state);
return cloneCampaignState(state);
}
export function normalizeCampaignReserveTrainingAssignments(
assignments?: Record<string, unknown>,
allowedUnitIds?: Set<string>