Salvage Data Model¶
The salvage data model separates authored item facts from runtime item state.
The authored data lives in:
The runtime actor is:
The shared structs and enums live in:
Enums¶
The current gameplay enums include:
EAndromedaHazardRating
EAndromedaSalvageProcessingAction
EAndromedaSalvageProcessingState
EAndromedaPackageCategory
EAndromedaHandlingSize
They are UENUM(BlueprintType) because the editor and Blueprints need to expose them in Data Assets and class defaults.
The difference between action and state is important:
Example:
AssignPackage is an action but not a final processing state. Packaging is an intermediate handling step.
Structs¶
FAndromedaScanProfile contains scanner-facing information:
FAndromedaPackageRequirement describes how an item should be packaged:
category: Normal / Quarantine / Freezer / Radiation
minimum size: XS / S / M / L / XL / XXL
required vs recommended
handling note
FAndromedaProcessingRule describes a final action result:
FAndromedaScanResult and FAndromedaProcessingResult are runtime result structs used by UI.
Data Asset¶
UAndromedaSalvageItemData is a UPrimaryDataAsset. It gives each salvage item authored metadata without requiring a new C++ class per item.
For example, DA_DamagedReactorCoil can define:
Changing those values changes scan output and processing behavior without changing C++.
Runtime Item State¶
AAndromedaSalvageItem stores runtime state:
These are not authored facts. They are what happened to this item instance during play.
ScanItem¶
The scanner calls:
ScanItem builds a scan result from the Data Asset, caches it, and marks the item scanned if the result is valid:
The cached scan result matters because the design wants the information panel to be available for that item after scanning.
AssignRequiredPackage¶
Packaging is not allowed until after scanning.
AssignRequiredPackage rejects:
If the item is already packaged, it returns an accepted "already assigned" result. If not, it sets:
The result text includes package category and size.
ProcessSalvage¶
Final processing happens in warehouse zones, not in the scanner.
ProcessSalvage(Action) looks for a matching processing rule in the Data Asset. If a valid allowed rule is found, it:
Disabling interaction prevents the item from re-entering the active handling loop after it has been sold, quarantined, or otherwise finalized.