Commit graph

10 commits

Author SHA1 Message Date
Your Name
7d84f595e4 Replace box variants with a moveable adhesion property
Collapse the spiky/sticky/skewer box-variant assets into a single per-
instance `adhesion` property on any moveable block, chosen in the editor
via a dropdown next to the colour picker and stored in the .sav alongside
the class.

- spiky -> sticky: soft grab on every true edge (goopy shader)
- skewer -> gluey: rigid weld on every true edge (spiked outline)
- old trailing-face sticky is removed; its saves fold into new sticky

Move the spike geometry + drawGlueySprite into shaders.lua, fold drawing
and the adhesion flag into GenericMoveable, and delete the three
Generic{Sticky,Spiky,Skewer} classes and box_variants.lua. Room:createEntity
normalises legacy spiky_/skewer_/sticky_ class prefixes so old saves load,
and serialization emits `adhesion`. World/map previews and the movement
proxy follow the rename.

Backfill rooms/*.sav to the new format via tools/backfill_adhesion.lua
(41 objects across 8 files). Update tests to the two-mode model; the two
tests asserting the removed lateral-shear limitation are dropped and a
legacy-load migration test added. 27/27 pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-21 16:34:01 -04:00
Your Name
bc4976b324 wired switches and doors 2026-08-11 22:55:58 -04:00
Your Name
f549eaf523 Add directional sticky and skewer box variants 2026-08-11 15:07:11 -04:00
Your Name
d96f57efb6 Add multi-cell box shapes with per-cell collision
Generate 1x2/2x1 dominoes, 2x2 (square + 4 L-trominoes) and all
connected 3x2/2x3 polyominoes as R/G/B channel masks, reusing the
distance-based concentric-ring format that reproduces box_r/g/b
exactly. Outer silhouette keeps a 1px margin; connected cells stay
seamless. Each shape ships a {class="moveable"} .meta so getAllAssets
auto-registers it as a GenericMoveable.

Wire the occupied-cell shape (precomputed once by getAllAssets via
getCellsFromSprite) through to entities: createEntity now passes the
cached cells as cellShape, so an L/U/notched block collides on its real
cells and its gaps read as empty space. Fix the per-colour cache that
was reset every channel so only one colour survived.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 12:42:33 -04:00
Your Name
c92c0f6ff7 fix state thigns and port to love11 2026-08-07 20:56:55 -04:00
Your Name
a8b469876d level editor improvements 2026-08-07 01:01:49 -04:00
0x81c
7c7f76b188 now analyzes sprite on load for occupied cells and serializs eetc hehe 2026-08-06 23:15:48 -04:00
0x81c
d690863b6f so we have a lot of it wor_ing properly, now we have to do the thing where it preloads necessary spritesgit add -A 2026-08-06 23:15:48 -04:00
0x81c
b071e117fa so we fixed up some bugs and restructured the level editor. master fiel. 2026-08-06 23:15:48 -04:00
0x81c
01d272981e id_ 2026-08-06 23:15:48 -04:00