64bc6cfe8fff98f4717608a3d3b67d2630964e21
Coincidence required the ghost's anchor to land exactly on the target's anchor, so on a 2x2 assembler three of its four tiles read as an ordinary overlap and went red: you had to find the top-left tile before the copy gesture would fire. A single-building blueprint now finds its target by hit-testing the cursor instead -- any body tile, any facing -- and its ghost snaps onto the target so it shows what the click will act on. A constellation is unchanged: it is placed as a layout, so its ghosts stay where the blueprint puts them and still need coincidence plus a matching rotation. The old "single-building blueprints ignore target rotation" carve-out is gone, subsumed by hovering. blueprintHoldsOneBuilding becomes std::optional<QPoint> hoverTile, which carries both facts in one parameter: set means "single-building blueprint, cursor here". BlueprintGhostResolved gains ghostAnchor/ghostRotation so the snap comes out of the classifier both callers already share, rather than the renderer working it out separately. Note the shipyard, which I had cited as the motivating case, is not one: its mask needs A cells on asteroid and S cells in space, and the asteroid edge is vertical, so a rotated shipyard can never be placed at all. Rotation was never the real problem here; alignment was. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JcReq7hVk4KUPhTDKWAG7K
Description
No description provided
Languages
C++
96%
CMake
2.2%
Python
1.2%
C
0.6%