Compare commits

...

2 commits

Author SHA1 Message Date
Your Name
e51dc22ca1 fix level editor truncation 2026-08-11 12:45:31 -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
155 changed files with 194 additions and 10 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
art/game/__pycache__/

View file

@ -0,0 +1 @@
{class="moveable"}

BIN
art/game/box_1x2_1-1_b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 B

BIN
art/game/box_1x2_1-1_g.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

BIN
art/game/box_1x2_1-1_r.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 B

1
art/game/box_2x1_11.meta Normal file
View file

@ -0,0 +1 @@
{class="moveable"}

BIN
art/game/box_2x1_11_b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

BIN
art/game/box_2x1_11_g.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

BIN
art/game/box_2x1_11_r.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

View file

@ -0,0 +1 @@
{class="moveable"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Some files were not shown because too many files have changed in this diff Show more