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>
23 lines
No EOL
375 B
Lua
23 lines
No EOL
375 B
Lua
require "entity"
|
|
|
|
GenericMoveable = class("GenericMoveable", Entity)
|
|
|
|
function GenericMoveable:initialize(x, y, color, sprite, name, cellShape)
|
|
Entity.initialize(self, {
|
|
name = name,
|
|
x = x,
|
|
y = y,
|
|
color = color,
|
|
collision = "moveable",
|
|
sprite = sprite,
|
|
cellShape = cellShape
|
|
})
|
|
end
|
|
|
|
function GenericMoveable:update()
|
|
|
|
end
|
|
|
|
function GenericMoveable:tick()
|
|
|
|
end |