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 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 imgSpin = gfx.image.new("gfx/spin")
|
||||
local imgCursor = gfx.image.new("gfx/cursor2")
|
||||
|
@ -72,6 +72,7 @@ local position = {x=100,y=100}
|
|||
local positionLerp = {x=0,y=0}
|
||||
|
||||
local powers = {}
|
||||
local checks = {}
|
||||
|
||||
function newProject()
|
||||
mode = "newproj"
|
||||
|
@ -101,6 +102,7 @@ function editLoadName(name)
|
|||
playerPos = {x = data.rocket.x, y = data.rocket.y}
|
||||
exitPos = {x = data.bigrocket.x, y = data.bigrocket.y}
|
||||
position = {x = (data.rocket.x + 6) / 16, y = (data.rocket.y + 4)/16}
|
||||
if data.checks then checks = data.checks end
|
||||
levelname = name:match("(.+)%..+$")
|
||||
playdate.display.setInverted(data.inverted)
|
||||
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}
|
||||
end
|
||||
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)
|
||||
end)
|
||||
toolTipButton = playdate.getSystemMenu():addMenuItem("save", function()
|
||||
|
@ -137,8 +139,8 @@ function playdate.keyboard.keyboardWillHideCallback(ok)
|
|||
saveTime = 0
|
||||
grav=0.2
|
||||
song:stop()
|
||||
playdate.getSystemMenu():addCheckmarkMenuItem("level settings", function()
|
||||
local m = {"NO GRAVITY","NEGATIVE GRAVITY","REGULAR GRAVITY","INVERT LEVEL COLOURS","RESUME"}
|
||||
playdate.getSystemMenu():addMenuItem("level settings", function()
|
||||
local m = {"NO GRAVITY","NEGATIVE GRAVITY","REGULAR GRAVITY","INVERT COLOURS","CHANGE MUSIC","RESUME"}
|
||||
createMenu(m, true)
|
||||
end)
|
||||
playdate.getSystemMenu():addMenuItem("save",false, function()
|
||||
|
@ -173,7 +175,7 @@ local curYlerp = -32
|
|||
function editSave()
|
||||
playdate.datastore.delete("levels/"..levelname..".json")
|
||||
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
|
||||
|
||||
local traveltime = 1
|
||||
|
@ -235,7 +237,6 @@ function editUpdate()
|
|||
song:stop()
|
||||
song:load("sfx/song1")
|
||||
end
|
||||
tileIndex = 6
|
||||
songIndexSel = #editorSongs + 1
|
||||
elseif editor == "pos2Spin" then
|
||||
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
|
||||
exitPos = {x = (position.x + 11) * 16, y = (position.y + 7) * 16}
|
||||
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
|
||||
editor = "view"
|
||||
end
|
||||
|
@ -328,6 +329,13 @@ function editUpdate()
|
|||
break
|
||||
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
|
||||
elseif editor == "view" then
|
||||
editor = "main"
|
||||
|
@ -429,6 +437,10 @@ end
|
|||
imgSquare:draw(powers[power].x,powers[power].y)
|
||||
end
|
||||
|
||||
for check = 1, #checks, 1 do
|
||||
imgMus:draw(checks[check].x,checks[check].y)
|
||||
end
|
||||
|
||||
if editor ~= "view" then
|
||||
imgGrid:drawTiled((position.x-2)*16,(position.y-2)*16,416,288)
|
||||
imgCursor:draw((position.x + 11) * 16, (position.y + 7) * 16)
|
||||
|
@ -502,7 +514,7 @@ end
|
|||
elseif math.floor( tileIndex ) == 5 then
|
||||
gfx.drawText("EXIT",0,0)
|
||||
elseif math.floor( tileIndex ) == 6 then
|
||||
gfx.drawText("MUSIC",0,0)
|
||||
gfx.drawText("CHECKPOINTS",0,0)
|
||||
elseif math.floor( tileIndex ) == 7 then
|
||||
gfx.drawText("VIEW",0,0)
|
||||
end
|
||||
|
@ -530,6 +542,7 @@ function editClose()
|
|||
powers = {}
|
||||
sawblades = {}
|
||||
spins = {}
|
||||
checks = {}
|
||||
editor = "main"
|
||||
tileIndex = 0
|
||||
playdate.display.setInverted(false)
|
||||
|
@ -544,6 +557,10 @@ function setGrav(val)
|
|||
grav = val
|
||||
end
|
||||
|
||||
function setEditor(val)
|
||||
editor = val
|
||||
end
|
||||
|
||||
local gravs = {[0.2]="REGULAR",[0]="NONE",[-0.2]="NEGATIVE"}
|
||||
|
||||
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.saws then loadBlades(level.saws) 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
|
||||
grav = level.grav or 0.2
|
||||
if level.next then next = level.next end
|
||||
|
|
|
@ -237,6 +237,10 @@ function menuButtonPress(name, index)
|
|||
barpos = 160
|
||||
logopos = -112
|
||||
|
||||
elseif name == "CHANGE MUSIC" then
|
||||
setEditor("music")
|
||||
mode = "editor"
|
||||
|
||||
elseif name == "START CUTSCENE" then
|
||||
local m = {"BACK","WATCH START CUTSCENE"}
|
||||
m[0] = "dat"
|
||||
|
@ -312,7 +316,9 @@ function menuButtonPress(name, index)
|
|||
elseif menu == "qrs" or menu == "data" or menu == "dat" then
|
||||
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"
|
||||
createMenu(m)
|
||||
createMenu(m)
|
||||
elseif menu == nil then
|
||||
|
||||
else
|
||||
createMenu(mainmenu)
|
||||
end
|
||||
|
|
|
@ -32,6 +32,10 @@ local resetButton = nil
|
|||
|
||||
local sfxDie = playdate.sound.sampleplayer.new("sfx/die")
|
||||
|
||||
function setSpawn(_x,_y)
|
||||
startpos = {x=_x,y=_y}
|
||||
end
|
||||
|
||||
local function die()
|
||||
deaths +=1
|
||||
explode(sprRocket.x,sprRocket.y)
|
||||
|
|
|
@ -3,15 +3,20 @@ local gfx <const> = playdate.graphics
|
|||
local imgSaw = gfx.imagetable.new("gfx/sawblades")
|
||||
local imgFuel = gfx.imagetable.new("gfx/fuel")
|
||||
local imgTarget = gfx.image.new("gfx/target")
|
||||
local imgCheck = gfx.imagetable.new("gfx/checkpoint")
|
||||
assert(imgSaw)
|
||||
assert(imgFuel)
|
||||
assert(imgTarget)
|
||||
assert(imgCheck)
|
||||
|
||||
local loopSaws = gfx.animation.loop.new(200, imgSaw)
|
||||
local loopFuel = gfx.animation.loop.new(400, imgFuel)
|
||||
local loopCheck = gfx.animation.loop.new(300, imgCheck)
|
||||
|
||||
local blades = {}
|
||||
local spinblades = {}
|
||||
local fuels = {}
|
||||
local checks = {}
|
||||
|
||||
local sfxCollect = playdate.sound.sampleplayer.new("sfx/collect")
|
||||
|
||||
|
@ -108,6 +113,21 @@ function loadFuel(_fuel)
|
|||
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()
|
||||
local ox, oy = gfx.getDrawOffset()
|
||||
for fuel = 1, #fuels, 1 do
|
||||
|
@ -123,6 +143,20 @@ function updateSaws()
|
|||
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
|
||||
b = blades[b]
|
||||
b.saw:setImage(loopSaws:image())
|
||||
|
@ -181,6 +215,11 @@ function killBlades()
|
|||
end
|
||||
fuels = {}
|
||||
|
||||
for check = 1, #checks, 1 do
|
||||
checks[check]:remove()
|
||||
end
|
||||
checks = {}
|
||||
|
||||
for i = 1, #blades, 1 do
|
||||
blades[i].t1: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!
|
||||
bundleID=com.PossiblyAxolotl.RocketBytes
|
||||
launchSoundPath=launcher/rocketing
|
||||
version=1.1.3
|
||||
buildNumber=1
|
||||
version=1.2.0
|
||||
buildNumber=10200
|
||||
imagePath=launcher
|
Loading…
Reference in a new issue