[object Object]

← back to Dead Agentabrams

Sync ROOM 01: full cutout dancers + boat

f52b54574eefd1812dcbfc8f614ca8f9dec15a72 · 2026-09-01 18:46:28 -0700 · Steve Abrams

Files touched

Diff

commit f52b54574eefd1812dcbfc8f614ca8f9dec15a72
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue Sep 1 18:46:28 2026 -0700

    Sync ROOM 01: full cutout dancers + boat
---
 room/index.html | 41 +++++++++++++++++++++--------------------
 1 file changed, 21 insertions(+), 20 deletions(-)

diff --git a/room/index.html b/room/index.html
index 19a1b72..e0b3838 100644
--- a/room/index.html
+++ b/room/index.html
@@ -521,23 +521,23 @@ function drawFigure(x,y,s,phase,type,accent){
   }
 
   ctx.rotate(turn*0.28);
-  ctx.fillStyle=pal('dancer',0);
+  const body='rgba(74,30,34,0.98)';   // flat cutout costume tone
 
-  // head (with a small mask mark)
-  ctx.beginPath(); ctx.arc(0,-22,4.6,0,7); ctx.fill();
-  ctx.fillStyle=accent; ctx.globalAlpha=0.85;
-  ctx.fillRect(-3.4,-24,6.8,2.4);          // mask band
-  ctx.globalAlpha=1; ctx.fillStyle=pal('dancer',0);
+  // head (with a mask mark) — flat fill + bold outline
+  cut(body,1.4);
+  ctx.beginPath(); ctx.arc(0,-22,4.6,0,7); fillOutline();
+  ctx.fillStyle=accent; ctx.globalAlpha=0.9; ctx.fillRect(-3.4,-24,6.8,2.4); ctx.globalAlpha=1;   // mask band
 
-  // torso (tapered)
+  // torso (tapered) — cutout
+  cut(body,1.4);
   ctx.beginPath();
   ctx.moveTo(-4,-18); ctx.quadraticCurveTo(0,-6,-3,4);
   ctx.lineTo(3,4); ctx.quadraticCurveTo(0,-6,4,-18);
-  ctx.closePath(); ctx.fill();
+  ctx.closePath(); fillOutline();
 
-  // arms — swing conveys weight/effort
+  // arms — swing conveys weight/effort (bold outline limbs)
   const sw = Math.sin(t*(type==='musician'?2:1.4)+ph)*armSwing;
-  ctx.lineWidth=2.6; ctx.strokeStyle=pal('dancer',0); ctx.lineCap='round';
+  ctx.lineWidth=2.8; ctx.strokeStyle=OUTLINE; ctx.lineCap='round';
   ctx.beginPath();
   ctx.moveTo(-3,-15); ctx.lineTo(-9-sw*4,-10+sw*3);
   ctx.moveTo(3,-15);  ctx.lineTo(9-sw*4,-10-sw*3);
@@ -581,14 +581,14 @@ function drawBoat(){
   if(S.cam==='over'){ drawBoatOverhead(accent,lan,glow); ctx.restore(); return; }
 
   // ----- hull -----
-  ctx.fillStyle='rgba(30,8,12,0.96)';
+  cut('rgba(52,16,22,0.98)',3.5);
   ctx.beginPath();
   ctx.moveTo(-230,40);
   ctx.quadraticCurveTo(-260,10,-210,4);
   ctx.lineTo(210,4);
   ctx.quadraticCurveTo(262,10,232,40);
   ctx.quadraticCurveTo(0,78,-230,40);
-  ctx.closePath(); ctx.fill();
+  ctx.closePath(); fillOutline();
   // waterline highlight
   ctx.strokeStyle=pal('riverHi',0); ctx.globalAlpha=0.5; ctx.lineWidth=2;
   ctx.beginPath(); ctx.moveTo(-215,42); ctx.quadraticCurveTo(0,72,215,42); ctx.stroke();
@@ -601,8 +601,9 @@ function drawBoat(){
     {y:-60,w:120, h:-26, n:5}    // upper
   ];
   deckDefs.forEach((d,di)=>{
-    ctx.fillStyle='rgba(46,14,18,0.95)';
+    ctx.fillStyle='rgba(72,26,30,0.97)';
     ctx.fillRect(-d.w, d.y+d.h, d.w*2, 6);
+    ctx.strokeStyle=OUTLINE; ctx.lineWidth=1.6; ctx.strokeRect(-d.w, d.y+d.h, d.w*2, 6);
     ctx.strokeStyle='rgba(70,24,28,0.9)'; ctx.lineWidth=2;
     for(let px=-d.w; px<=d.w; px+=d.w/6){
       ctx.beginPath(); ctx.moveTo(px,d.y+d.h); ctx.lineTo(px,d.y+d.h+6); ctx.stroke();
@@ -616,11 +617,11 @@ function drawBoat(){
   });
 
   // ----- smokestacks -----
-  ctx.fillStyle='rgba(24,6,10,0.98)';
   [-40,40].forEach(sx=>{
-    ctx.fillRect(sx-7,-140,14,86);
-    ctx.fillStyle=accent; ctx.globalAlpha=0.6; ctx.fillRect(sx-9,-142,18,6); ctx.globalAlpha=1;
-    ctx.fillStyle='rgba(24,6,10,0.98)';
+    ctx.fillStyle='rgba(46,14,20,0.98)'; ctx.strokeStyle=OUTLINE; ctx.lineWidth=2.4;
+    ctx.fillRect(sx-7,-140,14,86); ctx.strokeRect(sx-7,-140,14,86);
+    ctx.fillStyle=accent; ctx.globalAlpha=0.7; ctx.fillRect(sx-9,-142,18,6); ctx.globalAlpha=1;
+    ctx.strokeRect(sx-9,-142,18,6);
   });
   // smoke drift
   if(!S.reduced){
@@ -632,9 +633,9 @@ function drawBoat(){
   }
 
   // ----- pilot house -----
-  ctx.fillStyle='rgba(40,12,16,0.98)';
-  ctx.fillRect(-30,-104,60,30);
-  ctx.fillStyle=accent; ctx.globalAlpha=0.35; ctx.fillRect(-24,-98,48,10); ctx.globalAlpha=1;
+  ctx.fillStyle='rgba(64,22,26,0.98)'; ctx.strokeStyle=OUTLINE; ctx.lineWidth=2.4;
+  ctx.fillRect(-30,-104,60,30); ctx.strokeRect(-30,-104,60,30);
+  ctx.fillStyle=accent; ctx.globalAlpha=0.4; ctx.fillRect(-24,-98,48,10); ctx.globalAlpha=1;
 
   // ----- paddlewheel (right side) -----
   drawPaddlewheel(232,26,accent);

← 12d58b3 Sync ROOM 01: cutout animals + paper grain  ·  back to Dead Agentabrams  ·  Sync ROOM 01: singing songbirds with note-bubbles 19a1a6b →