2022-04-22 18:02:47 +00:00
|
|
|
local gfx <const> = playdate.graphics
|
2022-04-19 21:31:46 +00:00
|
|
|
local tileTable <const> = gfx.imagetable.new("gfx/tiles")
|
|
|
|
local tilemap <const> = gfx.tilemap.new()
|
|
|
|
tilemap:setImageTable(tileTable)
|
2022-05-07 20:31:34 +00:00
|
|
|
local tiles = {}
|
2022-04-23 23:54:00 +00:00
|
|
|
|
2022-05-12 22:04:00 +00:00
|
|
|
local sprTiles = gfx.sprite.new(tilemap)
|
2022-05-09 04:31:57 +00:00
|
|
|
|
2022-04-23 21:48:23 +00:00
|
|
|
function addMapSave(_file)
|
2022-05-11 00:23:22 +00:00
|
|
|
playdate.datastore.delete("savegame.json")
|
2022-05-07 20:31:34 +00:00
|
|
|
playdate.datastore.write({savedLevel=_file,savedDeaths=deaths},"savegame")
|
|
|
|
addMap(_file, false)
|
|
|
|
mode = "game"
|
2022-04-23 21:48:23 +00:00
|
|
|
end
|
|
|
|
|
2022-05-07 20:31:34 +00:00
|
|
|
function addMap(_file, rs)
|
2022-05-15 05:42:52 +00:00
|
|
|
next = nil
|
2022-05-07 20:31:34 +00:00
|
|
|
if rs then deaths = 0 end
|
|
|
|
if #tiles > 0 then
|
|
|
|
for i = 1, #tiles, 1 do
|
|
|
|
tiles[i]:remove()
|
|
|
|
end
|
|
|
|
end
|
2022-04-19 21:31:46 +00:00
|
|
|
local level = json.decodeFile(_file)
|
2022-05-09 04:31:57 +00:00
|
|
|
local width = 0
|
|
|
|
local height = 0
|
|
|
|
|
|
|
|
for i = 1, #level.tiles, 1 do
|
|
|
|
if level.tiles[i].x > width then width = level.tiles[i].x end
|
|
|
|
if level.tiles[i].y > height then height = level.tiles[i].y end
|
|
|
|
end
|
2022-05-07 20:31:34 +00:00
|
|
|
|
2022-05-09 04:31:57 +00:00
|
|
|
tilemap:setSize(width,height)
|
2022-04-19 21:31:46 +00:00
|
|
|
for i = 1, #level.tiles, 1 do
|
|
|
|
tilemap:setTileAtPosition(level.tiles[i].x,level.tiles[i].y,level.tiles[i].t)
|
|
|
|
end
|
|
|
|
|
2022-05-22 02:06:58 +00:00
|
|
|
song:stop()
|
|
|
|
if level.song then
|
|
|
|
song:load("sfx/"..level.song)
|
|
|
|
else
|
|
|
|
song:load("sfx/song2")
|
|
|
|
end
|
|
|
|
|
|
|
|
song:play(0)
|
|
|
|
|
2022-05-18 05:09:02 +00:00
|
|
|
if level.inverted then playdate.display.setInverted(true) else playdate.display.setInverted(false) end
|
2022-04-24 05:03:32 +00:00
|
|
|
if level.saws then loadBlades(level.saws) end
|
2022-04-27 02:40:39 +00:00
|
|
|
if level.rotators then loadSpins(level.rotators) end
|
2022-05-15 00:31:57 +00:00
|
|
|
if level.fuel then loadFuel(level.fuel) end
|
2022-05-15 05:42:52 +00:00
|
|
|
if level.next then next = level.next end
|
2022-04-23 23:54:00 +00:00
|
|
|
addPlayer(level.rocket.x,level.rocket.y, level.bigrocket.x, level.bigrocket.y)
|
2022-04-23 06:54:45 +00:00
|
|
|
|
2022-05-12 22:04:00 +00:00
|
|
|
tiles = gfx.sprite.addWallSprites(tilemap, {0,1,6,7,8,10,11,12})
|
2022-04-19 21:31:46 +00:00
|
|
|
|
2022-05-12 22:04:00 +00:00
|
|
|
sprTiles:remove()
|
|
|
|
sprTiles = gfx.sprite.new(tilemap)
|
|
|
|
sprTiles:setZIndex(-1)
|
|
|
|
sprTiles:moveTo(sprTiles.width/2,sprTiles.height/2)
|
|
|
|
sprTiles:add()
|
2022-05-09 04:31:57 +00:00
|
|
|
end
|
2022-05-22 02:06:58 +00:00
|
|
|
|
|
|
|
function removeMap()
|
|
|
|
if #tiles > 0 then
|
|
|
|
for i = 1, #tiles, 1 do
|
|
|
|
tiles[i]:remove()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
sprTiles:remove()
|
|
|
|
end
|