Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,39 @@ The native shim's ABI is tracked separately by `b2Version()` (currently `4`).

### Added

- **Platformer: TRANSITION CARD + boot TITLE screen + recomposed WIN card (the
polish pass's headline - `docs/platformer-polish-plan.md` §2 / §2.4).** The single
biggest "demo-not-game" tell is gone: a full-screen opaque overlay now COVERS
every level teardown + rebuild, so the player never sees the old level clear or the
new one assemble. One card-level control (`pfCardShade` + `pfCardText`, built once
in `buildPfUI`, `kPfUIVersion` 10 -> 11, raised above the camera viewport like the
pause overlay so it never scrolls) does three jobs:
- **Cover -> reveal.** `pfStartGame` raises the opaque biome card (`pfCardCover`)
BEFORE the teardown trio (`b2kClear` / `b2kTeardown` / `pfWipeStage`), so the
whole build paints behind it; after `b2kStart` it holds a beat then FADES out
(`pfCardReveal` -> a `send`-driven `blendLevel` ramp, generation-guarded so a
fresh cover invalidates a stale fade). The fade is decoupled from the frame loop
on purpose - it never touches the intro code a past pan rework broke (gotcha 11).
Every caller gets it for free: level start, level -> level advance, R-restart, the
dev picker, and the title's SPACE-start. Death / respawn keeps its light
camera-shake (no full card, by design).
- **A boot TITLE screen.** The demo no longer drops straight into L1: it opens on a
"B O X 2 D X T" card with a **live hero preview** (the chosen skin's idle frame -
a camera-off Kit sprite is a plain card control) and the **1-5 hero chooser** moved
HERE, where picking can't accidentally restart a level. SPACE / RETURN starts a
fresh run. The in-level 1-5 binding (and `pfPickHero`) is retired accordingly; the
pause overlay's hero line now points at the title.
- **A recomposed WIN card.** The final-run summary is restyled in the level-card
visual language (a deeper, more central panel) and now names the **chosen hero**
alongside time / falls / gems / stars / coin-score / the flawless callout.
- **Bug fix carried along.** A single `pfResetRun` now zeroes EVERY whole-run bank;
the dev picker and "Play again" previously left the coin-score + star banks stale,
inflating a second run's win screen.
Biome card tints / flavours + the hold-and-fade timings are first-pass and tunable
in OXT. Example-side only - no Kit touch, so no harness bump and the embedded Kit
stays in sync. Static gates clean, audit 0 findings. **Needs an OXT pass** to
confirm the cover fully masks the build, the fade feel, the title hero preview, and
the card composition.
- **Platformer: CHARACTER SELECT + a hero portrait (asset-expansion Phase G).** The
hero is no longer locked to the beige skin: press **1-5** to pick
**beige / green / pink / purple / yellow** (`gHeroSkin`). The skin is one word the
Expand Down
17 changes: 15 additions & 2 deletions docs/platformer-polish-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,15 @@ well, not adding more.

## 2. THE HEADLINE: interstitial / transition screens

> **Status (branch `claude/zealous-hypatia-v52yu7`):** IMPLEMENTED — needs an OXT
> pass. A card-level `pfCardShade`/`pfCardText` overlay (built once in `buildPfUI`,
> `kPfUIVersion` → 11) covers every `pfStartGame` teardown+build (`pfCardCover`
> before the teardown, `pfCardReveal` send-driven `blendLevel` fade after `b2kStart`),
> the demo boots to a title screen with a live hero preview + the 1-5 chooser (moved
> off the in-level binding), and the win screen is recomposed in the card language.
> Static gates + audit clean; example-side only (no Kit touch). Tints/flavours/timings
> are first-pass tunables. See the CHANGELOG entry for the full landing notes.

**The problem.** `pfStartGame` (the per-level world build) runs its **teardown
before the `lock screen`** (it deletes the previous level's controls at
~`pfStartGame`:`b2kTeardown`/`pfWipeStage`, then locks the screen only at the
Expand Down Expand Up @@ -231,9 +240,13 @@ adjust on an OXT pass, level by level:

## 9. Definition of done (the final checklist)

- [ ] **No visible build.** Every level start / advance / restart / hero-pick is
- [~] **No visible build.** Every level start / advance / restart / hero-pick is
masked by the transition card; the player never sees teardown or construction.
- [ ] **Bookends.** A title screen (with hero select) and a composed win screen.
*(Implemented — `pfCardCover`/`pfCardReveal`; needs OXT confirmation that the
cover fully masks the build on the engine.)*
- [~] **Bookends.** A title screen (with hero select) and a composed win screen.
*(Implemented — boot title with live hero preview + recomposed win card; needs
an OXT pass.)*
- [ ] **Facing & scale clean** on every sprite, all 7 levels (OXT-confirmed).
- [ ] **Feel locked** — jump/dash/swim/spring numbers deliberate, every beat
fairly clearable, the difficulty ramp intentional.
Expand Down
Loading
Loading