Commit Graph

3 Commits

Author SHA1 Message Date
Brian Fertig 36e36fb2d1 Fix MineralHud capacity restore snapping the fill back to stale fraction
- Void in-flight count-up tween when max changes so a late landing can't redraw against the old cap (250/250 → full after cap grew to 500)
- Add regression test for mid-count-up capacity restore voiding the stale tween
- Archive completed ship-screen goal and add ship.mp4 asset
2026-09-19 09:53:46 -06:00
Brian Fertig 5f54cc327e Add trade economy engine, credits currency, and goods catalog
- New Economy.js price/stock engine: deterministic buy/sell prices based on
  producer/demand classes and hop distance (regional availability model)
- Goods catalog (114 goods, 9 categories) with spritesheet mapping and
  per-class producer/demand roles
- Credits state on Ship (add/spend/set/canAfford), save/restore support,
  and upper-right HUD stacked above the minerals readout
- Quest reward payout now supports credits alongside minerals
- cargoHold reduced to 4 units for initial play balance
- Economy generation pass in Galaxy.js computes classBySystem and
  producerHops via multi-source BFS over the jump network
- dev/economy.test.mjs validates determinism, fixed prices, trade loop
  profitability, distance scaling, shop floor composition, and icon mapping
- docs/ECONOMY.md: full design doc covering pricing model, gemstone system,
  and locked decisions
2026-09-11 18:36:30 -06:00
Brian Fertig ee2e874f41 Replace tether HUD with live mineral hold readout bar
- Add MineralHud component (js/ui/MineralHud.js) showing "MINERALS n / N"
  plus a fill bar in the upper-right corner, replacing the old tether
  stack. One tween drives both the counting number and the bar so they
  never drift; a cyan flash ripples on landings; amber at capacity.
- Wire Mining to emit an onOre(gained, hold) seam per extraction tick and
  per fragment landing so the HUD fills live as the rock shrinks, not
  only at the batch 'absorbed' event.
- Remove refreshTetherHud / fmtRange from GameScene; instantiate MineralHud
  in create(), feed it via refreshMineralHud() from ore seams and mining
  events, destroy on shutdown.
- Add data/mineralhud.json config (corner pad, bar geometry, count-up and
  flash tuning) and register it in the manifest.
- Tests: new dev/mineral-hud.test.mjs covering layout, count-up/bar sync,
  superseded-tween guard, capacity/clamping, teardown; extend
  dev/mining.test.mjs to assert onOre ticks; drop tether-HUD checks from
  dev/system-hud.test.mjs; add setOrigin/setScrollFactor no-ops to the
  Phaser stub.
2026-09-05 12:12:18 -06:00