0.2.6-dev: a piece has no screen rect until it is first drawn — pieceScreenRect returned a just-built view's unprojected (0, 0) record, so a browser test grabbed a piece bought that frame at the canvas corner (the intermittent .fwheel__dia timeout in coop.e2e / real.e2e); the tests' piecePoint waits for a drawn piece that holds still; golden: unchanged
This commit is contained in:
1 parent
2b685011e9
commit
1df530f2b9
4 files changed
+38
-9
No files matched your search
@@ -47,6 +47,7 @@
|
||||
// a special terrain tile's own tip; the screen resolves it with gameLogic.terrainInfo)
|
||||
// tileHover { row, col, area, idx } | null (while dragging: the drop target — the tile under the pointer)
|
||||
// view.pieceScreenRect(uid) → { left, top, right, bottom, width, height, x, y } (client px: the drawn body) | null
|
||||
// (null also until the piece is first drawn)
|
||||
// Picking (user playtest #4 item 1: the ground is drawn as tiles — a press on a tile is a press on the unit standing
|
||||
// there): every "which unit is under the pointer" — prep press / click / detail / drag start / hover (pieceAt), battle
|
||||
// clicks and hover (battleUnitAt), the pen (penUnitAt) — is render/pick.js over the tile under the pointer (groundTile:
|
||||
@@ -1939,7 +1940,8 @@ export async function createFieldView(host, options = {}) {
|
||||
pieceScreenRect(uid) {
|
||||
let v = views.get('p:' + uid);
|
||||
if (!v) for (const x of views.values()) if (x.uid === uid || x.info?.uid === uid || x.id === uid) { v = x; break; }
|
||||
if (!v || v.destroyed) return null;
|
||||
// a view built this frame is placed by its first update: before that its screen record is still (0, 0)
|
||||
if (!v || v.destroyed || !v.placed) return null;
|
||||
const b = v.bounds();
|
||||
const r = canvas.getBoundingClientRect();
|
||||
const left = r.left + b.x, top = r.top + b.y;
|
||||
|
||||
Reference in new issue
Block a user