feat(repair): support multiple required parts and per-part case anchor
- RepairMissionConfig.requiredReplacementPartId (string) is replaced by requiredReplacementPartIds (readonly string[]) so a mission can accept several alternative correct parts (e.g. pylon will accept either cable). - RepairMissionPartConfig gains optional caseAnchor (where the standalone spawns inside packderelance), caseLockGroup (mutually exclusive parts), and targetNodeName (snap onto a node of the broken model rather than a placeholder slot in the case). - RepairScannedBrokenPart gains targetNodeName so scan results can carry this hint through to the repairing step. - RepairRepairingStep validation logic (placed/wrong/feedback) now matches any id in requiredReplacementPartIds. Existing data is migrated mechanically (single-element arrays); part-level new fields are wired in subsequent commits.
This commit is contained in:
@@ -25,7 +25,7 @@ export const REPAIR_MISSIONS: Record<RepairMissionId, RepairMissionConfig> = {
|
||||
interactUiPath: REPAIR_INTERACT_UI_PATH,
|
||||
brokenUiPath: REPAIR_BROKEN_UI_PATH,
|
||||
case: DEFAULT_REPAIR_CASE,
|
||||
requiredReplacementPartId: "ebike-cooling-core-replacement",
|
||||
requiredReplacementPartIds: ["ebike-cooling-core-replacement"],
|
||||
brokenParts: [
|
||||
{
|
||||
id: "ebike-cooling-core",
|
||||
@@ -59,7 +59,7 @@ export const REPAIR_MISSIONS: Record<RepairMissionId, RepairMissionConfig> = {
|
||||
brokenUiPath: REPAIR_BROKEN_UI_PATH,
|
||||
case: DEFAULT_REPAIR_CASE,
|
||||
reassemblySeconds: 1.8,
|
||||
requiredReplacementPartId: "pylon-grid-relay-replacement",
|
||||
requiredReplacementPartIds: ["pylon-grid-relay-replacement"],
|
||||
scanPartSeconds: 1.4,
|
||||
brokenParts: [
|
||||
{
|
||||
@@ -104,7 +104,7 @@ export const REPAIR_MISSIONS: Record<RepairMissionId, RepairMissionConfig> = {
|
||||
brokenUiPath: REPAIR_BROKEN_UI_PATH,
|
||||
case: DEFAULT_REPAIR_CASE,
|
||||
reassemblySeconds: 1.2,
|
||||
requiredReplacementPartId: "farm-irrigation-pump-replacement",
|
||||
requiredReplacementPartIds: ["farm-irrigation-pump-replacement"],
|
||||
scanPartSeconds: 0.9,
|
||||
brokenParts: [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user