feedback7: merge fb7-dragsnap — a dragged operator stands on the tile under the pointer while that is a legal target, as in the owner's recording of the official deployment (the report in PR #403 by @bubububaoshe; the pick, highlight, wheel and drop stay the pointer's tile); §27.62; golden: unchanged

This commit is contained in:
sganggs committed 2026-10-09 01:43:00 +08:00
commit 775d4f8515
11 files changed
+228 -53

No files matched your search

+42 -1
View File
@@ -19,7 +19,7 @@ pull slides, the champagne's bar, closed eyes, late attack clips, the HP-bar rea
cues, atlas refreshes, 梓兰's frost) → §27.36–§27.46; the interface (device tips, the settings button, the shop fold,
spectators, the top-bar capsule, the empty new shop slot) → §27.47–§27.52; voices → §27.53–§27.54; the statistics page
→ §27.55; potential and training (潜能 / 练度) and the 干员调配 list → §27.56–§27.59; the 自选 picker's Esc → §27.60;
whole-frame attack intervals and SP costs (PR #402) → §27.61.
whole-frame attack intervals and SP costs (PR #402) → §27.61; the drag snap → §27.62.
Decisions of the owner, 2026-10-08 (round 22, from community reports, GitHub and research into the official rules):
潜能 and the 自持有 练度 bonus are set per operator in 干员调配, defaults 潜能 6 and 精英2 Lv.60 (official: the account's
@@ -1519,3 +1519,44 @@ Notes for the integrator
skipped (the browser suites off); GOLDEN_FULL golden.test 9 / 9; eslint 0 errors (135 warnings, as on the parent).
- **Docs**: docs/SIM.md §2 (the countdown, the turrets / icicles, the official 帧对齐 note) and §7.1 (SP);
docs/design/geometry-time.md §4.
### 27.62 A dragged operator stands on the tile it will drop on, as in the official deploy drag (the report in PR #403 by @bubububaoshe — not merged: the pick stays the pointer's tile; the owner's recording of the official game, 2026-10-09) — `render/app.js moveDragVisual`, `render/drag.js dragStandTile`
- **Seen**: while an operator was dragged, the model was held under the pointer — its drawn (lifted) feet
`DRAG_HOLD_TILES` (0.45 tile, §18.1) of its own px per tile below the pointer, solved on the lifted plane (ground +
the 0.3 drag lift) — while the drop target, its highlight, `tileHover` and the direction wheel are the tile under the
pointer. On the prep camera the feet and the shadow landed about 0.7 tile toward the camera: on the tile below the
highlighted one (PR #403's screenshot). Measured on the parent in the mock: the pointer on (9,4) held the model at y
8.46–8.50 (mouse at 1920×1080, finger on the 844×390 phone), on (11,5) at y 9.98–10.50 (1600×900); in the Final
Assault prep about 0.7 tile off its target. PR #403 moved the pick to the feet instead. That breaks the standing rule
(§18.1: the tile under the pointer decides; restated by the owner on #138, §27.49), still misses by about 0.2 tile (it
samples the ground ray, the model is lifted) and fails models.browser #4.1, so the pick stays and only the drawing
changes.
- **Official**: the owner's recording of the official game (2026-10-09; a deploy drag, the gesture 卫戍协议 shares, research
09 §1.2): while an operator is dragged onto the field its model is drawn standing on the tile under the touch point.
It does not float with the finger: the finger moving inside the tile leaves the model where it is, the touch point on
that tile at the model's feet or lower body; that tile is lit (with the attack-range stripes), takes the drop, and the
direction wheel opens on it. Over no deployable tile no model is shown on the field.
- **Now**: `moveDragVisual` asks `dragStandTile(pieceDragMove)`, which returns the drop target while it is LEGAL and on
the board or the bench (`{ row, col, bench }`, board space); the unit's world x / y / z are then set to that tile at
once (no tween between tiles) through `boardWorld` — the point the drop tween goes to, with the Final Assault / Hidden
Core prep transform — and it keeps its drag lift. Otherwise — no target, an illegal tile, a temp slot, its own bench
slot, `'outside'` over the shop bar — it is held under the pointer as before, so the player still sees what they carry
(our pieces start on the bench, unlike the official hand card, so "no model off the field" is not taken). Item plates
are unchanged (centred on the pointer). The pick (`pickBoardTile`), the highlight, `tileHover`, the wheel and the drop
are untouched, and mouse and touch share the path (the phone uses the same tile pick). A drop from the snapped place
has nothing left to slide: the lift drops and the wheel opens on the tile. The DOM fallback field
(`ui/fallbackField.js`: a flat grid, its ghost centred on the pointer, so already on its tile) is unchanged.
- [ASSUMED]: a legal bench slot is stood on like a board tile (the recording shows the field only); the 0.3 drag lift
stays while the unit stands (the recording does not settle a lift that small).
- **Golden**: unchanged (presentation only).
- **Tests**: test/render/drag.test.js (+2: `dragStandTile`'s decisions; a drag through the controller over its stubbed
tile pick, mouse and touch — one tile while the pointer moves inside it, the next legal tile at once, none on an
illegal tile, a temp slot, the own bench slot, the shop bar or off the grid, the drop on the tile stood on, a board
piece on its own tile). test/render/models.browser.test.js #4.1 drag (mouse) and touch (phone): over a legal tile the
unit stands on the pointer's tile (its x / y = the tile, on its top, lifted), at four spots of the tile without moving
on screen, at every step of a second leg (standing on the legal tiles, held under the pointer elsewhere), held under
the pointer / finger over the shop bar, standing on a free bench slot; the wheel on the pointer's tile as before.
test/render/fieldview.browser.test.js: in the Final Assault prep (both halves) the dragged unit stands on its target's
boss-field tile, mirrored on the right. Both browser extensions fail on the parent. test/docs-consistency.test.js (the
code calls `dragStandTile`, DESIGN and PLAYING describe it). Docs: docs/PLAYING.md §4, README.md,
docs/design/client.md §9 / §10, the app.js / drag.js / tune.js comments.