1.2.0
This commit is contained in:
parent
9ccf995c64
commit
b2c881a139
9 changed files with 78 additions and 11 deletions
|
@ -30,7 +30,7 @@ local grav = 0.2
|
||||||
|
|
||||||
local imgFloppy = gfx.imagetable.new("gfx/floppyT")
|
local imgFloppy = gfx.imagetable.new("gfx/floppyT")
|
||||||
local imgAdd = gfx.image.new("gfx/add")
|
local imgAdd = gfx.image.new("gfx/add")
|
||||||
local imgMus = gfx.image.new("gfx/music")
|
local imgMus = gfx.image.new("gfx/checkpEditor")
|
||||||
local imgLine = gfx.image.new("gfx/line")
|
local imgLine = gfx.image.new("gfx/line")
|
||||||
local imgSpin = gfx.image.new("gfx/spin")
|
local imgSpin = gfx.image.new("gfx/spin")
|
||||||
local imgCursor = gfx.image.new("gfx/cursor2")
|
local imgCursor = gfx.image.new("gfx/cursor2")
|
||||||
|
@ -72,6 +72,7 @@ local position = {x=100,y=100}
|
||||||
local positionLerp = {x=0,y=0}
|
local positionLerp = {x=0,y=0}
|
||||||
|
|
||||||
local powers = {}
|
local powers = {}
|
||||||
|
local checks = {}
|
||||||
|
|
||||||
function newProject()
|
function newProject()
|
||||||
mode = "newproj"
|
mode = "newproj"
|
||||||
|
@ -101,6 +102,7 @@ function editLoadName(name)
|
||||||
playerPos = {x = data.rocket.x, y = data.rocket.y}
|
playerPos = {x = data.rocket.x, y = data.rocket.y}
|
||||||
exitPos = {x = data.bigrocket.x, y = data.bigrocket.y}
|
exitPos = {x = data.bigrocket.x, y = data.bigrocket.y}
|
||||||
position = {x = (data.rocket.x + 6) / 16, y = (data.rocket.y + 4)/16}
|
position = {x = (data.rocket.x + 6) / 16, y = (data.rocket.y + 4)/16}
|
||||||
|
if data.checks then checks = data.checks end
|
||||||
levelname = name:match("(.+)%..+$")
|
levelname = name:match("(.+)%..+$")
|
||||||
playdate.display.setInverted(data.inverted)
|
playdate.display.setInverted(data.inverted)
|
||||||
grav = data.grav or 0.2
|
grav = data.grav or 0.2
|
||||||
|
@ -112,7 +114,7 @@ function editLoadName(name)
|
||||||
tiles[tile] = {x=data.tiles[tile].x,y=data.tiles[tile].y,t=data.tiles[tile].t}
|
tiles[tile] = {x=data.tiles[tile].x,y=data.tiles[tile].y,t=data.tiles[tile].t}
|
||||||
end
|
end
|
||||||
altClrButton = playdate.getSystemMenu():addMenuItem("level settings", function()
|
altClrButton = playdate.getSystemMenu():addMenuItem("level settings", function()
|
||||||
local m = {"NO GRAVITY","NEGATIVE GRAVITY","REGULAR GRAVITY","INVERT COLOURS","RESUME"}
|
local m = {"NO GRAVITY","NEGATIVE GRAVITY","REGULAR GRAVITY","INVERT COLOURS","CHANGE MUSIC","RESUME"}
|
||||||
createMenu(m, true)
|
createMenu(m, true)
|
||||||
end)
|
end)
|
||||||
toolTipButton = playdate.getSystemMenu():addMenuItem("save", function()
|
toolTipButton = playdate.getSystemMenu():addMenuItem("save", function()
|
||||||
|
@ -137,8 +139,8 @@ function playdate.keyboard.keyboardWillHideCallback(ok)
|
||||||
saveTime = 0
|
saveTime = 0
|
||||||
grav=0.2
|
grav=0.2
|
||||||
song:stop()
|
song:stop()
|
||||||
playdate.getSystemMenu():addCheckmarkMenuItem("level settings", function()
|
playdate.getSystemMenu():addMenuItem("level settings", function()
|
||||||
local m = {"NO GRAVITY","NEGATIVE GRAVITY","REGULAR GRAVITY","INVERT LEVEL COLOURS","RESUME"}
|
local m = {"NO GRAVITY","NEGATIVE GRAVITY","REGULAR GRAVITY","INVERT COLOURS","CHANGE MUSIC","RESUME"}
|
||||||
createMenu(m, true)
|
createMenu(m, true)
|
||||||
end)
|
end)
|
||||||
playdate.getSystemMenu():addMenuItem("save",false, function()
|
playdate.getSystemMenu():addMenuItem("save",false, function()
|
||||||
|
@ -173,7 +175,7 @@ local curYlerp = -32
|
||||||
function editSave()
|
function editSave()
|
||||||
playdate.datastore.delete("levels/"..levelname..".json")
|
playdate.datastore.delete("levels/"..levelname..".json")
|
||||||
saveTime = 5
|
saveTime = 5
|
||||||
playdate.datastore.write({song=selSong, grav=grav, tiles = tiles, inverted = playdate.display.getInverted(), rocket=playerPos, bigrocket=exitPos, fuel = powers,saws=sawblades,rotators=spins},"levels/"..levelname)
|
playdate.datastore.write({song=selSong, grav=grav, tiles = tiles, inverted = playdate.display.getInverted(), checks=checks, rocket=playerPos, bigrocket=exitPos, fuel = powers,saws=sawblades,rotators=spins},"levels/"..levelname)
|
||||||
end
|
end
|
||||||
|
|
||||||
local traveltime = 1
|
local traveltime = 1
|
||||||
|
@ -235,7 +237,6 @@ function editUpdate()
|
||||||
song:stop()
|
song:stop()
|
||||||
song:load("sfx/song1")
|
song:load("sfx/song1")
|
||||||
end
|
end
|
||||||
tileIndex = 6
|
|
||||||
songIndexSel = #editorSongs + 1
|
songIndexSel = #editorSongs + 1
|
||||||
elseif editor == "pos2Spin" then
|
elseif editor == "pos2Spin" then
|
||||||
spins[#spins+1] = {middle=true,x=pos1.x,y=pos1.y,speed=traveltime,arms=armamount,armlen=armlength}
|
spins[#spins+1] = {middle=true,x=pos1.x,y=pos1.y,speed=traveltime,arms=armamount,armlen=armlength}
|
||||||
|
@ -275,7 +276,7 @@ function editUpdate()
|
||||||
elseif math.floor(tileIndex) == 5 then
|
elseif math.floor(tileIndex) == 5 then
|
||||||
exitPos = {x = (position.x + 11) * 16, y = (position.y + 7) * 16}
|
exitPos = {x = (position.x + 11) * 16, y = (position.y + 7) * 16}
|
||||||
elseif math.floor(tileIndex) == 6 then
|
elseif math.floor(tileIndex) == 6 then
|
||||||
editor = "music"
|
checks[#checks+1] = {x = ((position.x + 11) * 16) - 7, y = ((position.y + 7) * 16) - 5}
|
||||||
elseif math.floor(tileIndex) == 7 then
|
elseif math.floor(tileIndex) == 7 then
|
||||||
editor = "view"
|
editor = "view"
|
||||||
end
|
end
|
||||||
|
@ -328,6 +329,13 @@ function editUpdate()
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
elseif math.floor( tileIndex ) == 6 then
|
||||||
|
for check = 1, #checks, 1 do
|
||||||
|
if checks[check].x == (position.x + 11) * 16-7 and checks[check].y == (position.y + 7) * 16-5 then
|
||||||
|
table.remove(checks, check)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
elseif editor == "view" then
|
elseif editor == "view" then
|
||||||
editor = "main"
|
editor = "main"
|
||||||
|
@ -429,6 +437,10 @@ end
|
||||||
imgSquare:draw(powers[power].x,powers[power].y)
|
imgSquare:draw(powers[power].x,powers[power].y)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
for check = 1, #checks, 1 do
|
||||||
|
imgMus:draw(checks[check].x,checks[check].y)
|
||||||
|
end
|
||||||
|
|
||||||
if editor ~= "view" then
|
if editor ~= "view" then
|
||||||
imgGrid:drawTiled((position.x-2)*16,(position.y-2)*16,416,288)
|
imgGrid:drawTiled((position.x-2)*16,(position.y-2)*16,416,288)
|
||||||
imgCursor:draw((position.x + 11) * 16, (position.y + 7) * 16)
|
imgCursor:draw((position.x + 11) * 16, (position.y + 7) * 16)
|
||||||
|
@ -502,7 +514,7 @@ end
|
||||||
elseif math.floor( tileIndex ) == 5 then
|
elseif math.floor( tileIndex ) == 5 then
|
||||||
gfx.drawText("EXIT",0,0)
|
gfx.drawText("EXIT",0,0)
|
||||||
elseif math.floor( tileIndex ) == 6 then
|
elseif math.floor( tileIndex ) == 6 then
|
||||||
gfx.drawText("MUSIC",0,0)
|
gfx.drawText("CHECKPOINTS",0,0)
|
||||||
elseif math.floor( tileIndex ) == 7 then
|
elseif math.floor( tileIndex ) == 7 then
|
||||||
gfx.drawText("VIEW",0,0)
|
gfx.drawText("VIEW",0,0)
|
||||||
end
|
end
|
||||||
|
@ -530,6 +542,7 @@ function editClose()
|
||||||
powers = {}
|
powers = {}
|
||||||
sawblades = {}
|
sawblades = {}
|
||||||
spins = {}
|
spins = {}
|
||||||
|
checks = {}
|
||||||
editor = "main"
|
editor = "main"
|
||||||
tileIndex = 0
|
tileIndex = 0
|
||||||
playdate.display.setInverted(false)
|
playdate.display.setInverted(false)
|
||||||
|
@ -544,6 +557,10 @@ function setGrav(val)
|
||||||
grav = val
|
grav = val
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function setEditor(val)
|
||||||
|
editor = val
|
||||||
|
end
|
||||||
|
|
||||||
local gravs = {[0.2]="REGULAR",[0]="NONE",[-0.2]="NEGATIVE"}
|
local gravs = {[0.2]="REGULAR",[0]="NONE",[-0.2]="NEGATIVE"}
|
||||||
|
|
||||||
function getGrav()
|
function getGrav()
|
||||||
|
|
|
@ -48,6 +48,7 @@ function addMap(_file, rs)
|
||||||
if level.inverted then playdate.display.setInverted(true) else playdate.display.setInverted(false) end
|
if level.inverted then playdate.display.setInverted(true) else playdate.display.setInverted(false) end
|
||||||
if level.saws then loadBlades(level.saws) end
|
if level.saws then loadBlades(level.saws) end
|
||||||
if level.rotators then loadSpins(level.rotators) end
|
if level.rotators then loadSpins(level.rotators) end
|
||||||
|
if level.checks then loadChecks(level.checks) end
|
||||||
if level.fuel then loadFuel(level.fuel) end
|
if level.fuel then loadFuel(level.fuel) end
|
||||||
grav = level.grav or 0.2
|
grav = level.grav or 0.2
|
||||||
if level.next then next = level.next end
|
if level.next then next = level.next end
|
||||||
|
|
|
@ -237,6 +237,10 @@ function menuButtonPress(name, index)
|
||||||
barpos = 160
|
barpos = 160
|
||||||
logopos = -112
|
logopos = -112
|
||||||
|
|
||||||
|
elseif name == "CHANGE MUSIC" then
|
||||||
|
setEditor("music")
|
||||||
|
mode = "editor"
|
||||||
|
|
||||||
elseif name == "START CUTSCENE" then
|
elseif name == "START CUTSCENE" then
|
||||||
local m = {"BACK","WATCH START CUTSCENE"}
|
local m = {"BACK","WATCH START CUTSCENE"}
|
||||||
m[0] = "dat"
|
m[0] = "dat"
|
||||||
|
@ -313,6 +317,8 @@ function menuButtonPress(name, index)
|
||||||
local m = {}
|
local m = {}
|
||||||
m[0],m[1], m[2], m[3], m[4], m[5], m[6] = "extras", "BACK","LINKS","END CUTSCENE", "START CUTSCENE", "MUSIC BOX", "LEVEL SELECT"
|
m[0],m[1], m[2], m[3], m[4], m[5], m[6] = "extras", "BACK","LINKS","END CUTSCENE", "START CUTSCENE", "MUSIC BOX", "LEVEL SELECT"
|
||||||
createMenu(m)
|
createMenu(m)
|
||||||
|
elseif menu == nil then
|
||||||
|
|
||||||
else
|
else
|
||||||
createMenu(mainmenu)
|
createMenu(mainmenu)
|
||||||
end
|
end
|
||||||
|
|
|
@ -32,6 +32,10 @@ local resetButton = nil
|
||||||
|
|
||||||
local sfxDie = playdate.sound.sampleplayer.new("sfx/die")
|
local sfxDie = playdate.sound.sampleplayer.new("sfx/die")
|
||||||
|
|
||||||
|
function setSpawn(_x,_y)
|
||||||
|
startpos = {x=_x,y=_y}
|
||||||
|
end
|
||||||
|
|
||||||
local function die()
|
local function die()
|
||||||
deaths +=1
|
deaths +=1
|
||||||
explode(sprRocket.x,sprRocket.y)
|
explode(sprRocket.x,sprRocket.y)
|
||||||
|
|
|
@ -3,15 +3,20 @@ local gfx <const> = playdate.graphics
|
||||||
local imgSaw = gfx.imagetable.new("gfx/sawblades")
|
local imgSaw = gfx.imagetable.new("gfx/sawblades")
|
||||||
local imgFuel = gfx.imagetable.new("gfx/fuel")
|
local imgFuel = gfx.imagetable.new("gfx/fuel")
|
||||||
local imgTarget = gfx.image.new("gfx/target")
|
local imgTarget = gfx.image.new("gfx/target")
|
||||||
|
local imgCheck = gfx.imagetable.new("gfx/checkpoint")
|
||||||
assert(imgSaw)
|
assert(imgSaw)
|
||||||
|
assert(imgFuel)
|
||||||
assert(imgTarget)
|
assert(imgTarget)
|
||||||
|
assert(imgCheck)
|
||||||
|
|
||||||
local loopSaws = gfx.animation.loop.new(200, imgSaw)
|
local loopSaws = gfx.animation.loop.new(200, imgSaw)
|
||||||
local loopFuel = gfx.animation.loop.new(400, imgFuel)
|
local loopFuel = gfx.animation.loop.new(400, imgFuel)
|
||||||
|
local loopCheck = gfx.animation.loop.new(300, imgCheck)
|
||||||
|
|
||||||
local blades = {}
|
local blades = {}
|
||||||
local spinblades = {}
|
local spinblades = {}
|
||||||
local fuels = {}
|
local fuels = {}
|
||||||
|
local checks = {}
|
||||||
|
|
||||||
local sfxCollect = playdate.sound.sampleplayer.new("sfx/collect")
|
local sfxCollect = playdate.sound.sampleplayer.new("sfx/collect")
|
||||||
|
|
||||||
|
@ -108,6 +113,21 @@ function loadFuel(_fuel)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function loadChecks(_checks)
|
||||||
|
|
||||||
|
for i = 1, #_checks, 1 do
|
||||||
|
local check = _checks[i]
|
||||||
|
checks[i] = gfx.sprite.new()
|
||||||
|
checks[i].set = false
|
||||||
|
checks[i]:moveTo(check.x+16,check.y+16)
|
||||||
|
checks[i]:setGroups({2})
|
||||||
|
checks[i]:setCollidesWithGroups({3})
|
||||||
|
checks[i]:setZIndex(3)
|
||||||
|
checks[i]:setCollideRect(-6,-6 ,30,30)
|
||||||
|
checks[i]:add()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function updateSaws()
|
function updateSaws()
|
||||||
local ox, oy = gfx.getDrawOffset()
|
local ox, oy = gfx.getDrawOffset()
|
||||||
for fuel = 1, #fuels, 1 do
|
for fuel = 1, #fuels, 1 do
|
||||||
|
@ -123,6 +143,20 @@ function updateSaws()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
for check = 1, #checks, 1 do
|
||||||
|
checks[check]:setImage(loopCheck:image())
|
||||||
|
if #checks[check]:overlappingSprites() > 0 and checks[check].set == false then
|
||||||
|
for check = 1, #checks, 1 do
|
||||||
|
checks[check].set = false
|
||||||
|
end
|
||||||
|
setSpawn(checks[check].x,checks[check].y)
|
||||||
|
miniExplode(checks[check].x,checks[check].y)
|
||||||
|
sfxCollect:play()
|
||||||
|
checks[check].set = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
for b=1, #blades, 1 do
|
for b=1, #blades, 1 do
|
||||||
b = blades[b]
|
b = blades[b]
|
||||||
b.saw:setImage(loopSaws:image())
|
b.saw:setImage(loopSaws:image())
|
||||||
|
@ -181,6 +215,11 @@ function killBlades()
|
||||||
end
|
end
|
||||||
fuels = {}
|
fuels = {}
|
||||||
|
|
||||||
|
for check = 1, #checks, 1 do
|
||||||
|
checks[check]:remove()
|
||||||
|
end
|
||||||
|
checks = {}
|
||||||
|
|
||||||
for i = 1, #blades, 1 do
|
for i = 1, #blades, 1 do
|
||||||
blades[i].t1:remove()
|
blades[i].t1:remove()
|
||||||
blades[i].t2:remove()
|
blades[i].t2:remove()
|
||||||
|
|
BIN
Source/gfx/checkp.png
Normal file
BIN
Source/gfx/checkp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 174 B |
BIN
Source/gfx/checkpEditor.png
Normal file
BIN
Source/gfx/checkpEditor.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 275 B |
BIN
Source/gfx/checkpoint-table-32-32.png
Normal file
BIN
Source/gfx/checkpoint-table-32-32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 930 B |
|
@ -3,6 +3,6 @@ author=PossiblyAxolotl
|
||||||
description=Help a crew of rockets collect energy to get back home!
|
description=Help a crew of rockets collect energy to get back home!
|
||||||
bundleID=com.PossiblyAxolotl.RocketBytes
|
bundleID=com.PossiblyAxolotl.RocketBytes
|
||||||
launchSoundPath=launcher/rocketing
|
launchSoundPath=launcher/rocketing
|
||||||
version=1.1.3
|
version=1.2.0
|
||||||
buildNumber=1
|
buildNumber=10200
|
||||||
imagePath=launcher
|
imagePath=launcher
|
Loading…
Reference in a new issue