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)