From 534e713010f49d195ed8e70b5f718d904bbccf84 Mon Sep 17 00:00:00 2001 From: jwinterm Date: Sat, 18 Jul 2026 03:50:07 -0400 Subject: [PATCH] feat(iso): floor pip on every walkable cell (dark gaps are clearly not floor) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Marking only the adjacent walkable cells was not enough — a dark wall-gap/void still read as a hole you could walk into. Now every visible floor cell gets a soft cyan pip, so the WALKABLE ground is explicit everywhere; a dark gap with no pip is unambiguously not floor. Keeps the stronger pulsing outline on the immediately-adjacent walkable cells. --- html/js/render/isoRenderer.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/html/js/render/isoRenderer.js b/html/js/render/isoRenderer.js index d4d0066..910c697 100644 --- a/html/js/render/isoRenderer.js +++ b/html/js/render/isoRenderer.js @@ -355,6 +355,16 @@ ctx.globalAlpha = cut ? 0.28 : Math.max(0.16, lb); if (rec && rec.ready) this._drawImage(rec.img, it.sx, it.sy + this.tileH, this.imageW, this.imageH); else this._diamond(it.sx, it.sy + this.tileH * 0.5, (legend[it.kind] && legend[it.kind].color) || '#3a4048'); + // Walkable-floor pip: mark every visible floor cell with a soft dot so the WALKABLE + // ground is explicit everywhere. A dark gap with no pip is unambiguously NOT floor — + // that's what stops iso wall-gaps/voids from reading as holes you can walk into. + if (it.kind === 'floor' || it.kind === 'floor2') { + ctx.globalAlpha = Math.max(0.14, lb) * 0.5; + ctx.fillStyle = 'rgba(150,215,255,1)'; + ctx.beginPath(); + ctx.arc(it.sx, it.sy + this.tileH * 0.5, 2.4, 0, Math.PI * 2); + ctx.fill(); + } ctx.globalAlpha = 1; } else if (it.type === 'prop') { this._contactShadow(it.sx, it.sy + this.tileH * 1.4, 22, 9);