diff --git a/TODOS.md b/TODOS.md index 2967ca8..2ebbe6f 100644 --- a/TODOS.md +++ b/TODOS.md @@ -39,8 +39,14 @@ portează în `escape-builder.html` (un singur fișier, integrare secvențială) - [x] **S2c — `STYLES.md`** — direcție restyle pentru cele 5 stiluri (GATA, 775 linii). Top 3 impact/efort: terminal `.line.dim` fix WCAG (3.1:1→6.1:1); classic card glow + progres bar; chat header `backdrop-filter` + bulă NPC distinctă. Consumat de S3. -- [!] **S3 — integrare în `escape-builder.html`** *(blocat de S2a+S2b+S2c)* +- [~] **S3 — integrare în `escape-builder.html`** *(secvențial: Bomberman → Overworld → restyle; smoke după fiecare)* Portează prototipurile (template literals → DUBLEAZĂ backslash-urile) + regenerează demo-urile. + Pas 1: Bomberman → `gameArcade`. Pas 2: Overworld → `gameCampaign`. Pas 3: restyle 5 stiluri. + - [x] Pas 1 — Bomberman în `gameArcade` (GATA). Păstrează `openPuzzle`/`onDoorSolved`/`showFinal`/ + `modalOpen()`/`roomReady`; uși=N puzzle-uri, cufăr=scăpare. Demo regenerat. Smoke 21/21 + + verificare gameplay 6/6 (`scratch/verify-arcade-integrated.mjs`) + captură. + - [ ] Pas 2 — Overworld în `gameCampaign`. + - [ ] Pas 3 — restyle 5 stiluri (din `STYLES.md`). - [!] **S4 — extinde `tests/smoke.mjs`** *(blocat de S3)* — bomberman, hartă, audio, regresie. **Stare la 2026-06-13:** PR1 livrat (`a42c960`, suita 21/21). Iterația 2 = neîncepută; diff --git a/escape-builder.html b/escape-builder.html index 120c420..ba818d7 100644 --- a/escape-builder.html +++ b/escape-builder.html @@ -1010,11 +1010,16 @@ function gameArcade(cfg) { #hudLetters { display: flex; gap: 4px; } #hudLetters span { width: 22px; height: 26px; border-radius: 5px; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.2); display: flex; align-items: center; justify-content: center; font-weight: 700; color: rgba(255,255,255,.4); font-size: 13px; } #hudLetters span.won { background: var(--accent); color: #fff; border-color: transparent; } - canvas { border: 3px solid #36246b; border-radius: 8px; background: #18102e; max-width: calc(100vw - 16px); } + canvas { border: 3px solid #36246b; border-radius: 8px; background: #18102e; max-width: calc(100vw - 16px); image-rendering: pixelated; } .help { font-size: 12px; color: #6f639e; margin: 8px 0 4px; text-align: center; padding: 0 10px; } - #dpad { display: flex; gap: 8px; margin: 6px 0 16px; } + #dpad { display: flex; gap: 8px; margin: 6px 0 16px; flex-wrap: wrap; justify-content: center; } #dpad button { width: 52px; height: 44px; font-size: 18px; border-radius: 9px; border: 1px solid #4a3590; background: #221643; color: #cdc3f0; cursor: pointer; } #dpad button:active { background: var(--accent); } + #btnBomb { background: #7f1d1d; border-color: #b91c1c; } + #goOverlay { display: none; position: fixed; inset: 0; background: rgba(8,4,20,.82); z-index: 25; align-items: center; justify-content: center; padding: 16px; } + #goCard { background: #221440; border: 1px solid rgba(255,255,255,.18); border-radius: 16px; padding: 24px; text-align: center; max-width: 360px; font-family: system-ui, sans-serif; } + #goCard #goMsg { font-size: 20px; margin-bottom: 14px; } + #goCard button { font: inherit; cursor: pointer; border: none; border-radius: 10px; padding: 11px 18px; font-weight: 700; background: var(--accent); color: #fff; } ${SNIP.baseCss}${SNIP.modalCss}${SNIP.finalCss} @@ -1022,115 +1027,237 @@ ${SNIP.baseCss}${SNIP.modalCss}${SNIP.finalCss}