⚠️ Economy — Internal Utilities¶
🎯 Purpose¶
These are shared low-level helpers used internally by Economy services and adapters. They exist to help keep behaviour consistent across the subsystem.
Namespace: RevGaming.RevFramework.Economy.Internal.Utilities
These types are internal implementation details and may change over time.
🚫 Not for Production Use¶
These utilities are not extension points.
They should not be referenced from gameplay code or integrations.
🧩 What Lives Here¶
PriceBundleUtil¶
Validation and normalization for PriceBundle.
Responsibilities:
- Validates money and item lines (returns
InvalidArgswith clear messages) -
Normalises money lines:
-
Merges duplicate currency ids
- Detects numeric overflow when summing amounts
- Produces deterministic ordering (ordinal by id)
-
Convenience checks:
-
HasMoney()/HasItems() Validate()TryNormalize()
Used internally by:
- Shop flows
- Crafting flows
- Reward flows
- Currency-backed ledger adapters
This helps ensure built-in economy operations use a consistent bundle shape.
EcoReasonUtil¶
Telemetry hygiene helper.
Responsibilities:
- Normalises caller-supplied reason strings (trim, default)
- Editor-only warnings when reasons are non-canonical (helps reduce analytics drift)
- Player builds avoid canonical checks (no runtime overhead from these checks)
Used throughout services and teachable or demo tooling to keep reason strings consistent.
EcoEditorBridge¶
Editor-only diagnostics bridge.
Responsibilities:
WarnOnce— logs a warning once per unique key per editor sessionWarnThrottle— rate-limits warnings per key over a time window- Player builds are no-op
Used by adapters and internal helpers to surface warnings without excessive log noise.
EconomyOwnerUtil¶
Readable owner labels for diagnostics.
Responsibilities:
OwnerKey(GameObject)provides a null-safe owner label (primarily for editor logs)
⚠️ Important Notes¶
- Internal utilities are not extension points
- They support consistent behaviour across Economy flows
- Custom behaviour should be implemented via supported interfaces and facade composition rather than depending on these helpers
🔗 Related Documentation¶
- Economy — Abstractions
- Economy — Facade
- Economy — Diagnostics