No description
  • LiveScript 52.9%
  • TypeScript 32.2%
  • JavaScript 14.7%
  • CSS 0.1%
Find a file
Patrick Nærvig Wøhlk 0bcbc97095
feat(cast-editor): show bitmaps and palettes, export a single member
Bitmap members showed only "Bitmap data stored in BITD chunk" — the
extension had no decoder, even though packages/director-format already
had one the player runs the real client with.

src/media/ ports that decoder (BITD PackBits + per-depth decode, the
built-in system palettes, CASt bitmap geometry) and adds the glue the
extension needs: resolving a member's palette from its CLUT member or a
built-in, applying the separate ALFA alpha chunk, and a small RGBA PNG
encoder so previews are a data URI and extraction writes real .png.

- Bitmap members render with zoom, checkerboard and a reg-point overlay,
  plus depth, palette name, alpha source and stored/decoded sizes
- Palette members render their colour table as swatches
- Extract to Folder writes .png per bitmap (raw .bitd only when a member
  cannot be decoded) and .palette.png per palette
- New: export one member on its own — "Export..." in the member view or
  the save icon on any tree row. Bitmap -> .png, palette -> .palette.png,
  text -> .txt, script -> .ls (or .lscr), anything else -> its raw chunk

The player ignores ALFA chunks, so previews here can show transparency
the client currently draws opaque (e.g. catalogue "deal" corner badges).

Verified: 14,671 bitmaps and 1,245 palette members across dcr/ decode
without error (depths 1/2/4/8/16/32, 89 with ALFA alpha), and 2,898
bitmaps in hh_interface, hh_pets_50, hh_cat_gfx_all_v24 and hh_people_1
are pixel-identical to what packages/director-format produces.

19 new tests; 217 of 228 pass (the 11 failures are the pre-existing
ProjectorRays suite, which spawns a Windows .exe).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 15:27:43 +02:00
.claude feat: claude 2026-02-25 00:01:24 +01:00
.planning docs(phase-08): add cursor interaction planning docs 2026-03-03 12:38:44 +01:00
dcr Initial commit 2026-02-24 23:54:34 +01:00
decompiled feat: vscode plugin 2026-05-01 00:02:39 +02:00
deploy chore(deploy): run web behind an existing edge proxy (single-host port conflict) 2026-07-20 18:37:01 +02:00
docs feat: vscode plugin 2026-05-01 00:02:39 +02:00
packages fix: 4-bit furni with own CLUT renders black (snow rug) 2026-07-22 08:30:05 +02:00
resources docs: add director references 2026-02-25 00:17:57 +01:00
skills/habbo-architecture feat: vscode plugin 2026-05-01 00:02:39 +02:00
tools feat(cast-editor): show bitmaps and palettes, export a single member 2026-08-24 15:27:43 +02:00
.gitignore feat: cross-territory wiring for the Lingo gap fan-out 2026-07-10 22:56:37 +02:00
CLAUDE.md feat(cast-editor): open and save compressed .cct/.dcr casts natively 2026-08-24 15:06:12 +02:00
external_texts.txt feat: wip 2026-02-26 13:48:19 +01:00
external_variables.txt feat: vscode plugin 2026-05-01 00:02:39 +02:00
package-lock.json feat(player): migrate frontend to pixi.js v8 WebGL renderer 2026-07-08 09:52:43 +02:00
package.json feat: Playwright browser verification harness 2026-07-06 10:34:43 +02:00
tsconfig.base.json feat: pure-TypeScript Shockwave player running the real Habbo client 2026-06-12 12:07:05 +02:00
vitest.config.ts feat: pure-TypeScript Shockwave player running the real Habbo client 2026-06-12 12:07:05 +02:00