Skip to content

Packager And Placement Flow

After scanning, the item moves through physical handling steps:

scanner
-> packager workstation
-> freeform station placement

This keeps the game from becoming a pure terminal UI. The player's decisions are expressed spatially by how they carry, package, place, recover, and organize items.

Item handling follows the current ownership rule:

carry component owns hands and held item movement
placement mode component owns preview and freeform commit rules
workstation owns spatial validation and workstation rules
salvage item owns salvage data and physical state helpers

The salvage item does not own carry state, workstation validation, or placement preview state.

Packager Workstation

AAndromedaPackagerWorkstation inherits from AAndromedaWorkstation.

It customizes acceptance:

return Super::CanAcceptObject(CandidateObject)
    && StationDatabank->HasValidScanRecordForObject(CandidateObject);

That means an item without a valid scan record in the station databank cannot be used by the packager workstation. This enforces the loop:

scan first
package second
place/store third

The packager workstation can be used only if exactly one spatially valid item is in its placement volume and:

the item has been scanned
the item is not already packaged

When used, it calls:

Item->AssignRequiredPackage();

For now, success/failure is lightweight. The gameplay rule is real even though the feedback is not final.

After packaging succeeds, the item remains physical and pickup-enabled. Pickup still routes through the character/carry path using the salvage item's pickup capability.

Package Assignment

Package assignment does not spawn a package actor yet. It sets item state:

bPackageAssigned = true;

The Data Asset defines what package is required:

category: Normal / Quarantine / Freezer / Radiation
minimum size: XS / S / M / L / XL / XXL
handling note

Later, this can grow into actual package selection, package mesh spawning, labels, printed tags, and warehouse stacking. The current foundation only needs the state transition.

Freeform Placement

UAndromedaPlacementModeComponent is owned by the player character.

It:

  • toggles placement mode while the carry component has a held item
  • traces from the first-person camera for a candidate location
  • mirrors the held item's mesh as a ghost preview
  • checks that the target location is inside station bounds
  • cycles yaw, pitch, and roll as the active rotation axis
  • asks UAndromedaCarryComponent to release the item at the committed transform

Committed freeform placement enables physics on the salvage item. Midair placements are allowed inside station bounds; the item falls and settles under normal physics.

Removed Warehouse Zones

The old Sell and Quarantine warehouse zone classes are no longer part of the active flow. Final sale, quarantine, reporting, cargo transfer, and consequence handling will be redesigned after physical placement and storage ownership are proven.