Salvage Data Model¶
The salvage data model separates authored item facts, physical item runtime state, and station-owned scan memory.
The authored data lives in:
The physical runtime actor is:
The station-owned scan memory is:
The shared structs and enums live in:
Authored Data¶
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 and package-handling output without changing C++.
Runtime Item State¶
AAndromedaSalvageItem stores physical item state:
The item can build a scan result from its data asset, but it does not remember whether it has been scanned and does not cache scan data. Scan memory belongs to the station databank.
ScanInstanceId is a runtime FGuid generated for the physical item instance. It distinguishes two actors that share the same UAndromedaSalvageItemData when scanned.
Scan Result And Station Databank¶
FAndromedaScanResult is the UI-facing result built by a scannable object. Salvage items populate that generic payload from their item data asset, but the scan payload does not store a salvage data asset pointer.
FAndromedaScannedItemRecord stores the station-owned scan memory:
UAndromedaStationDatabankComponent stores records by item ID for the current play session. It stores invalid scan results too, so the scanner can remember that a result was already shown even when item data was missing.
Future save/load work should serialize station databank records through USaveGame. There is no disk persistence in the current slice.
Packaging¶
Package assignment is handled by the packager workstation after it verifies that the workstation's owning station databank has a valid scan record for the item.
AssignRequiredPackage rejects:
If the item has data, it sets:
The operation is idempotent; calling it on an already packaged item leaves the item packaged.
Processing¶
Final sale, quarantine, reporting, cargo transfer, and consequence handling are intentionally absent from the current placement foundation. The old warehouse zones and terminal processing flow have been removed from active source.
Future consequence gameplay should introduce its own cargo/finalization owner after physical storage rules are proven.