feat: gadget backpack system — save circuits as items

Add Pokemon-style inventory where players save crafted circuits as
"gadgets" in a backpack. Gadgets can be used on puzzle doors to solve
them by testing their truth table against required outputs.

New files:
- js/world/inventory.js: gadget data model, backpack UI (list with
  scroll, action menu, detail panel), keyboard navigation

Changes:
- Workshop gets "Save as Gadget" button (pink, top-right)
- I key opens backpack overlay in world mode
- Puzzle doors open backpack to select a gadget to try
- HUD shows gadget count instead of old component count
- worldState gains gadgets[] array

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jose Luis
2026-03-20 17:30:30 +01:00
parent f8aa4e2eab
commit b999fe855a
6 changed files with 633 additions and 18 deletions

View File

@@ -33,8 +33,11 @@ export const worldState = {
// Dialog
dialog: null, // { lines: [...], currentLine: 0, speakerName: '' } or null
// Inventory of crafted components
inventory: [], // array of component IDs from customComponents (stored in circuit editor)
// Inventory of crafted components (legacy — component IDs)
inventory: [],
// Gadget backpack — saved circuits as reusable items
gadgets: [], // array of gadget objects (see inventory.js)
// Puzzle state
solvedPuzzles: [], // array of puzzleIds that have been solved
@@ -70,6 +73,7 @@ export function resetWorldState() {
worldState.camera.y = 0;
worldState.dialog = null;
worldState.inventory = [];
worldState.gadgets = [];
worldState.solvedPuzzles = [];
worldState.activePuzzle = null;
worldState.flags = {};