Inventory — Integrations¶
The Integrations/Inventory/ folder contains optional integration glue between the Inventory system and other RevFramework systems.
Integrations live at the RevFramework root so optional cross-system code is kept outside the standalone Inventory module.
These integrations are intentionally lightweight, adapter-based, and safe to remove.
They provide:
- Optional Inventory ↔ other-system behaviour
- No required dependency from Inventory core to those systems
- Define-gated compilation where needed
- Small translation layers instead of shared gameplay logic
Think of this folder as the optional cross-system joinery layer for Inventory.
These integrations are built and supported for RevFramework systems only. They are not intended as a general integration layer for third-party tools.
Design Goals¶
Integrations exist to:
- Keep Inventory fully standalone
- Avoid circular or hidden dependencies between systems
- Allow cross-system behaviour only when explicitly installed
- Ensure removing a system does not break compilation or runtime behaviour
Inventory core code never assumes an integration exists.
Structure¶
Integrations are organised by target system.
Examples:
PickupsIntegration/→ Inventory ↔ Pickups integration
Looking for the Inventory ↔ Currency bridge?
It lives on the Currency side, at Integrations/Currency/InventoryIntegration/ — that is where ItemBackedCurrencyAdapter backs a wallet with inventory items.
There used to be a CurrencyIntegration/ folder here as well. It held one internal helper that nothing called and could not be called from outside its own assembly, under a README describing a bridge it did not implement. It has been removed rather than left as a second, emptier place to look for the same feature.
Each subfolder may contain:
- Adapters
- Integration helpers
- Optional dispatch logic
- Translation layers
- Convenience wrappers
These are system-specific integrations — not shared gameplay policy layers.
Adapter & Define Safety¶
Most integrations are:
- Define-gated (for example
REV_PICKUPS_PRESENT) - Compiled only when the target system is present
- Stubbed or excluded entirely when dependencies are missing
This guarantees:
- No compile errors when systems are removed
- No accidental runtime coupling
- Clean SKU separation
- Predictable optional behaviour
Safe to Remove¶
If you are not using cross-system integrations:
✅ The integration folders under
Integrations/Inventory/are safe to delete.
Inventory itself will continue functioning normally with:
- Containers
- Equipment
- Item use
- Snapshots
- Sorting/searching
- Inventory UI
- Runtime services
These folders exist only to support optional interoperability between RevFramework systems.
When Should I Use Integrations?¶
Use integrations when:
- Inventory needs to interoperate with another system
- You want to translate data or events between systems
- You want both systems to remain independently removable
- You want optional behaviour without hard dependencies
Do not use integrations to:
- Add core gameplay rules
- Extend Inventory internals directly
- Share mutable state between systems
- Bypass public APIs
Third-Party / Custom System Use¶
These integrations are designed specifically for RevFramework systems.
If integrating Inventory with external or third-party systems:
- Treat these integrations as reference examples
- Build your own adapter layer
- Consume Inventory through the public APIs
👉 Third-party integrations are not officially supported through this layer.
Dependency Philosophy¶
Inventory is intentionally strict about dependency direction.
The Inventory module itself:
- Does not directly depend on other RevFramework systems
- Does not require integrations to function
- Remains removable and standalone
Cross-system behaviour belongs here — not inside Inventory core.
This keeps the framework modular, predictable, and SKU-safe.
Namespace Consistency¶
All integration implementations should use the RevGaming.RevFramework.Integrations.* namespace hierarchy.
Example:
namespace RevGaming.RevFramework.Integrations.Inventory.Pickups
Avoid legacy Bridges namespace paths from older architecture revisions.
See Also¶
- Inventory Root README
- Inventory Abstractions
- Inventory Services
- RevFramework Public API documentation
Support Stance¶
Integrations are intentionally small and narrowly scoped.
If you need deeper coupling or game-specific orchestration:
- Build it in your gameplay layer, or
- Create a project-specific adapter consuming public APIs
Inventory itself remains standalone and dependency-light by design.