79 lines
3.1 KiB
Lua
79 lines
3.1 KiB
Lua
collectedEntities = filteredSystem({ collected = T.PdImage })
|
|
|
|
local onCollidingRemove = { "mass", "velocity", "canCollideWith" }
|
|
|
|
roundSystem = filteredSystem({ roundAction = T.RoundStateAction, position = Maybe(T.XyPair) }, function(e, _, system)
|
|
if e.roundAction == "end" then
|
|
playdate.setAutoLockDisabled(false)
|
|
|
|
local y = e.position.y - 240
|
|
local rectWidth = 150
|
|
local plateSize = { x = rectWidth, y = 10 }
|
|
|
|
system.world:addEntity({
|
|
drawAsRectangle = { size = plateSize },
|
|
size = plateSize,
|
|
mass = 0.5,
|
|
velocity = { x = 0, y = 0 },
|
|
position = { x = e.position.x - (rectWidth / 2), y = y },
|
|
canCollideWith = 2,
|
|
canBeCollidedBy = 2,
|
|
isSolid = true,
|
|
stopMovingOnCollision = true,
|
|
})
|
|
|
|
local delayPerDrop = 150
|
|
local delay = 0
|
|
for i, collectable in ipairs(collectedEntities.entities) do
|
|
local collX, collY = collectable.collected:getSize()
|
|
y = y - collY - 15
|
|
playdate.timer.new(delay, function(ee, ccollX, ccollY, yy, ii, ssystem, ccollectable)
|
|
ssystem.world:addEntity({
|
|
drawAsSprite = ccollectable.collected,
|
|
size = { x = ccollX, y = ccollY / 2 },
|
|
mass = 0.5,
|
|
velocity = { x = 0, y = 0 },
|
|
position = { x = ee.position.x - (ccollX / 2), y = yy },
|
|
canCollideWith = 2,
|
|
canBeCollidedBy = 2,
|
|
isSolid = true,
|
|
stopMovingOnCollision = true,
|
|
onCollidingRemove = onCollidingRemove,
|
|
focusOnCollide = ii,
|
|
expireBelowScreenBy = 5,
|
|
})
|
|
end, e, collX, collY, y, i, system, collectable)
|
|
delay = delay + delayPerDrop
|
|
system.world:removeEntity(collectable)
|
|
end
|
|
|
|
local availableUpgrades = Utils.getNDifferentValues(getAvailableSpawnerUpgrades(), 3)
|
|
|
|
y = y - 50
|
|
for _, upgrade in ipairs(availableUpgrades) do
|
|
printTable(upgrade)
|
|
local collX, collY = 75, 30
|
|
y = y - collY - 15
|
|
playdate.timer.new(delay, function(ee, ccollX, ccollY, yy, ii, ssystem, ccollectable)
|
|
ssystem.world:addEntity({
|
|
drawAsText = {
|
|
text = upgrade.name,
|
|
},
|
|
size = { x = ccollX, y = ccollY / 2 },
|
|
mass = 0.5,
|
|
velocity = { x = 0, y = 0 },
|
|
position = { x = ee.position.x - (ccollX / 2), y = yy },
|
|
canCollideWith = 2,
|
|
canBeCollidedBy = 2,
|
|
isSolid = true,
|
|
stopMovingOnCollision = true,
|
|
onCollidingRemove = onCollidingRemove,
|
|
focusOnCollide = ii,
|
|
})
|
|
end, e, collX, collY, y, i, system, collectable)
|
|
delay = delay + delayPerDrop
|
|
end
|
|
system.world:removeEntity(e)
|
|
end
|
|
end)
|