remove the Shift copy-building-settings gesture
REQ-BLD-COPY-CONFIG is dropped: Shift+right-click no longer caches a building's recipe / schematic+layout / splitter filters, Shift+left-click no longer stamps them onto same-type buildings, and the cyan eligible- target tint and copy/paste flashes go with them. Shift+left-click now falls through to normal selection, which needs no code of its own -- only Ctrl is meaningful to selection (REQ-UI-MULTI-SELECT), so dropping the branch that consumed the click is enough. readBuildingConfig stays. It had two callers, and the other one is captureBlueprintFromSelection, which needs it to record each blueprint building's configuration (REQ-UI-BLUEPRINT-STORAGE). Its five tests stay too, retagged [blueprint] and rewritten to name the caller that is left. The visuals.toml copy_config colour is removed together with its VisualsConfig field and its loader line: overlay keys are mandatory, so those three have to move as one or startup aborts. REQ-BLD-COPY-CONFIG-FEEDBACK, cited by four of these files and by the TOML comment, never existed in requirements.md; deleting the citations retires a dangling id. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JcReq7hVk4KUPhTDKWAG7K
This commit is contained in:
@@ -333,7 +333,7 @@ The game world is drawn into a single `GameWorldView` widget that inherits `QOpe
|
||||
|
||||
The drawing itself lives in `WorldRenderer`, not in the widget. `paintGL` is a call sequence: build the frame's `WorldCoordinates`, hand the renderer a `WorldRenderFrame`, then draw the screen-anchored chrome. The split is the world-space / screen-space line, and it is exact: the renderer draws everything positioned in tiles, while everything positioned in pixels — the pause and deconstruct vignettes, the replay overlay, the debug stats panel — stays with the widget. A useful consequence is that the renderer draws no translatable text at all (its text is config-driven glyphs, ASCII port arrows, and numbers), so it needs no `tr()` and no tie to the meta-object system.
|
||||
|
||||
`WorldRenderFrame` is what makes the renderer independent of the widget. The renderer reads the simulation directly, but everything else it draws is interaction state the widget owns — the selection, the active build mode, live beams, the copy-settings feedback, the box-select rectangle. Those are gathered into the frame each `paintGL` and passed by reference, so the renderer keeps no copy that a later click could invalidate. The renderer knows nothing about input: the widget resolves clicks and hit-tests, and the renderer only draws the result.
|
||||
`WorldRenderFrame` is what makes the renderer independent of the widget. The renderer reads the simulation directly, but everything else it draws is interaction state the widget owns — the selection, the active build mode, live beams, the box-select rectangle. Those are gathered into the frame each `paintGL` and passed by reference, so the renderer keeps no copy that a later click could invalidate. The renderer knows nothing about input: the widget resolves clicks and hit-tests, and the renderer only draws the result.
|
||||
|
||||
### Render Loop
|
||||
|
||||
|
||||
Reference in New Issue
Block a user