Vacuum controls: pick-up modes and separate pick-up and blow marks in the bag (t6, t15)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+6
-3
@@ -43,7 +43,7 @@ decides something new, add it under "Decisions" with the date.
|
||||
## The core loop
|
||||
|
||||
1. Dig with the resonance drill. Rock shatters into loose grains: rubble, ore, coal, clay, sand.
|
||||
2. Vacuum up what you want (tick materials to take only those), and blow it out where you need it.
|
||||
2. Vacuum up what you want (mark materials with ⬇ to take only those), and blow it out where you need it.
|
||||
3. Build a furnace from wall blocks, with a grate floor over a mold. Charge it with ore and coal,
|
||||
light it, and let the molten metal run into the mold.
|
||||
4. Bars drop out of the bottom of the mold; collect them and sell them at the trade dock, or fill buyers' orders, which pay more.
|
||||
@@ -127,8 +127,8 @@ above, including:
|
||||
- **Holding Ctrl** while placing replaces what is built there (moved to G on 2026-10-23).
|
||||
- **Fans melt like copper (1085°C).** Put the fan outside the furnace, blowing in through a grate.
|
||||
The game warns when a fan gets close to melting.
|
||||
- **The vacuum takes only ticked materials** when anything is ticked, even if the drag starts on
|
||||
something else.
|
||||
- **The vacuum takes only marked materials** in Only marked mode, even if the drag starts on
|
||||
something else. The t6 controls below replace the shared ticks.
|
||||
- **The Refiner** grinds stone, granite and basalt rubble, gravel, sand and dirt for trace ore,
|
||||
roughly halving the waste. Ore and anything else it cannot grind drop straight through.
|
||||
- **Pipes, pumps and outlets** move liquids up to 500°C, one liquid per line. A line is stored as
|
||||
@@ -222,6 +222,9 @@ above, including:
|
||||
- **The bag is the vacuum's control panel (t6).** Each bag row has separate pick-up and blow
|
||||
marks; a chip on the tool card sets pick-up to everything, only marked, or the same as the
|
||||
first click; R over a grain toggles its pick-up mark. The owner found the shared ticks confusing.
|
||||
As built: T or the chip cycles What I click → Only marked → Everything; adding a mark switches
|
||||
to Only marked and removing the last goes back to What I click. A bag name or Q/E blows one
|
||||
material; ⬆ marks build an even mix (bars are never mixed).
|
||||
|
||||
## Ideas not built yet
|
||||
|
||||
|
||||
+7
-7
@@ -366,7 +366,7 @@ Audio: chiptune effects and generative music that changes with depth. Everything
|
||||
- functions: auInit, auVolumes, rateOk, tone, noiseBurst, sfxPlace, playSfx, auAmbient, mtof, zoneForDepth, scaleNote, musicScheduler
|
||||
- variables: AU, SFX, SFX_NEAR, SFX_FAR, ZONES
|
||||
|
||||
### src/ui/state.js (67 lines)
|
||||
### src/ui/state.js (69 lines)
|
||||
Game shell (src/ui/): browser only. This file: settings, the GAME state object, DOM helpers, toasts and the status line.
|
||||
- functions: loadSettings, saveSettings, loadCollect, el, esc, rgbOf, fmtT, toast, setStatus
|
||||
- variables: SET_DEFAULT, SET, TOOLS, ICONS, BAG_ORDER, GAME, keys, hudDirty, $
|
||||
@@ -395,19 +395,19 @@ The notebook (N): milestones, market, wallet, blueprints, controls.
|
||||
- functions: openNotebook, renderNotebook, fmtClock, orderName, orderLeft, renderMarketTab, fmtPrice, itemsText, renderWallet, renderBlueprintTab, copyCode, controlsHtml
|
||||
- variables: nbTab, MARKET_GROUPS
|
||||
|
||||
### src/ui/hud.js (40 lines)
|
||||
### src/ui/hud.js (37 lines)
|
||||
The tool hotbar and what is selected.
|
||||
- functions: renderHotbar, toolId, steering, modShift, grainAt, selectTool, bagMaterials, mixList, ensureDropMat, piece
|
||||
- functions: renderHotbar, toolId, steering, modShift, grainAt, selectTool, bagMaterials, blowList, ensureBlow, piece
|
||||
|
||||
### src/ui/build-menu.js (102 lines)
|
||||
The build menu along the bottom: categories, piece tiles and their icons.
|
||||
- functions: pieceIcon, catOf, selectBuildCat, cycleBuildCat, buildVariantChips, renderBuildBar, setupBuildBar
|
||||
- variables: BUILD_CATS, BUILD_ORDER, PIECE_ICONS, lastBuildKey, lastBuildMenu
|
||||
|
||||
### src/ui/selection.js (252 lines)
|
||||
### src/ui/selection.js (263 lines)
|
||||
The selected tool and piece: R / Q / E, drill width, filter picker, the selection card, the bag panel.
|
||||
- functions: pieceUsesWall, setDrillWidth, tuneUnderCursor, cycleItem, cycleWall, rotate, toggleCollect, pickFilterUnderCursor, toggleFilterMat, toggleCollectUnderCursor, setBrush, pieceV, pieceExtra, filterChoices, matList, filterParts, filterSentence, applyFilterRun, openFilterPicker, openWallPicker, filterBlockAt, chipCost, pieceCostNow, renderSelCard, renderBag
|
||||
- variables: lastBagKey
|
||||
- functions: pieceUsesWall, setDrillWidth, tuneUnderCursor, cycleItem, cycleWall, rotate, setPickMode, cyclePickMode, toggleCollect, toggleBlow, pickFilterUnderCursor, toggleFilterMat, toggleCollectUnderCursor, setBrush, pieceV, pieceExtra, filterChoices, matList, filterParts, filterSentence, applyFilterRun, openFilterPicker, openWallPicker, filterBlockAt, chipCost, pieceCostNow, renderSelCard, renderBag
|
||||
- variables: PICK_MODES, PICK_LABELS, lastBagKey
|
||||
|
||||
### src/ui/info.js (171 lines)
|
||||
Discovery cards, hover info (I) and the cursor label.
|
||||
@@ -418,7 +418,7 @@ Keyboard and mouse listeners.
|
||||
- functions: isTyping
|
||||
- variables: canvas
|
||||
|
||||
### src/ui/actions.js (243 lines)
|
||||
### src/ui/actions.js (239 lines)
|
||||
What input does: overlays, F, pick, copy / cut / paste, undo, building and tool use each frame. Which overlays are on, shown as a coloured frame round the screen and a named badge
|
||||
- functions: updateOverlayUI, toggleLens, doInteract, pickUnderCursor, aimBlock, stampOrigin, selModeHeld, startPaste, stopSelectAndPaste, plural, piecesIn, doUndo, endRmbRecord, dragDirFor, blockLabel, primaryPress, primaryRelease, secondaryPress, toolTick
|
||||
- variables: ovShown
|
||||
|
||||
@@ -4,6 +4,20 @@ What agents have done, newest first. Add an entry for every piece of work: the d
|
||||
note or request it was for, what changed, the files touched, the tests run, and anything left
|
||||
open or not verified. Keep each entry short; the git history has the details.
|
||||
|
||||
## 2026-10-24: t6 Rework the vacuum/blower tool, with t15 (Claude Code, Codex)
|
||||
|
||||
- The owner folded t15 (a material menu for the vacuum) into t6's chosen design.
|
||||
- `src/ui/state.js`, `hud.js`, `actions.js`, `selection.js`: `GAME.pickMode` ('first', 'marked',
|
||||
'all', saved in localStorage) and `GAME.blow` (a set) replace `dropMat`, `blowMix`,
|
||||
`matChosen` and the Ticked mix. Pick-up marks stay in `GAME.collect` (same storage key).
|
||||
- Bag rows with the vacuum: ⬇ pick-up toggle, name (blow only this), ⬆ blow toggle. Tool card:
|
||||
a pick-up mode chip (T or click cycles) and the blow choice (Q/E). Gamepad button 1 cycles the
|
||||
mode when nothing else uses it. Text updated in `info.js`, `notebook.js`, `progress.js` (the
|
||||
copper hint), `src/sim/vacuum.js` (a status line), `docs/DESIGN.md`.
|
||||
- `test/play.py`: modes, automatic switching, independent marks, mixes, persistence, toggles only
|
||||
with the vacuum; `test/t_basics.js`: the new status. Screenshots checked at 1280 and 900.
|
||||
- Tests: `run_all.py --browser` all pass (214 `play.py` checks).
|
||||
|
||||
## 2026-10-24: decisions for t1, t4, t6 (Claude Code)
|
||||
|
||||
- Options given in chat; the owner chose: t1 neat bar piles plus a Bar rack; t4 Grinder and Saw
|
||||
|
||||
Reference in New Issue
Block a user