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>
This commit is contained in:
Your Name 2026-08-11 12:42:33 -04:00
parent 5b7ea9ec20
commit d96f57efb6
154 changed files with 194 additions and 9 deletions

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

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