Skip to content

Platformer: character select + a hero portrait (Phase G)#68

Merged
SethMorrowSoftware merged 1 commit into
mainfrom
claude/wizardly-brown-1lgjrx
Jun 20, 2026
Merged

Platformer: character select + a hero portrait (Phase G)#68
SethMorrowSoftware merged 1 commit into
mainfrom
claude/wizardly-brown-1lgjrx

Conversation

@SethMorrowSoftware

Copy link
Copy Markdown
Owner

What

Phase G of the asset-expansion plan: character select + a hero portrait. The hero is no longer locked to the beige skin.

How it works

  • Press 1-5 to pick beige / green / pink / purple / yellow (gHeroSkin). The skin is one word that the hero anim defs and the creation frame interpolate ("character_" & gHeroSkin & "_idle", etc.), so picking re-skins the whole character — idle / walk / jump / duck / climb / hurt / win.
  • The swap happens via a clean rebuild (pfPickHeropfStartGame): the Kit's player controller suppresses redundant anim replays (sPlayAnimNow), so redefining anims live would show a mixed state — a rebuild (and pfLoadSheets already runs per build) is the reliable swap. gLevel is unchanged, so you stay on the same level wearing the new skin.
  • The choice persists across levels and restarts.

Portrait

  • A hud_player_<skin> avatar anchors the bottom-left status corner, with the heart row shifted right of it — a tidy "avatar + health" cluster. Rebuilt each level so it always shows the current hero.

Discoverability

  • The intro splash and the ESC pause overlay gained the 1-5 hint (kPfUIVersion → 10, so saved stacks rebuild the pause overlay once).

Notes

  • All 5 skins (incl. beige) carry the full 8-frame anim set (verified against the atlas), so any pick animates completely.
  • hud_player_helmet_* left unused — the plain portraits read cleaner at HUD scale.
  • The no-atlas placeholder path stays skin-agnostic (numeric frames); gHeroSkin defaults to beige before any use.

Verification

  • tools/check-livecodescript.pyPASS
  • tools/audit-platformer.py0 findings across 7 levels
  • Example-side only — no Kit change, no harness bump.

⚠️ Needs an OXT pass to confirm each skin animates cleanly (facing, duck/climb frames) and the bottom-left avatar + heart cluster looks right.

🤖 Generated with Claude Code

https://claude.ai/code/session_01X92APxUJUMue3bAzXiX9V2


Generated by Claude Code

Press 1-5 to pick the hero skin (beige/green/pink/purple/yellow). gHeroSkin is
one word the hero anim defs + the creation frame interpolate, so picking
re-skins the whole character (idle/walk/jump/duck/climb/hurt/win) on a clean
rebuild - the controller suppresses redundant anim replays, so a rebuild
(pfLoadSheets already runs per build) is the reliable swap. The choice persists
across levels and restarts.

- pfPickHero (1-5 in rawKeyDown) maps the key to a skin and rebuilds; a no-op if
  it's already that skin.
- A hud_player_<skin> PORTRAIT anchors the bottom-left status corner; the heart
  row shifts right of it. Rebuilt each level so it always shows the current hero.
- The splash + ESC pause overlay gained the 1-5 hint; kPfUIVersion -> 10.

All five skins carry the full 8-frame anim set. Example-side only; static gates
clean, audit 0 findings. Needs an OXT pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X92APxUJUMue3bAzXiX9V2
@SethMorrowSoftware SethMorrowSoftware force-pushed the claude/wizardly-brown-1lgjrx branch from 7118239 to cb69d64 Compare June 20, 2026 04:00
@SethMorrowSoftware SethMorrowSoftware marked this pull request as ready for review June 20, 2026 04:03
@SethMorrowSoftware SethMorrowSoftware merged commit fb2aae7 into main Jun 20, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants