From d06cc122b1769e006b207005609ec93bef81f98f Mon Sep 17 00:00:00 2001 From: PossiblyAxolotl Date: Tue, 19 Apr 2022 15:22:15 -0600 Subject: [PATCH] Refactored player and tilemap into seperate scripts --- Source/Main.lua | 59 +++++---------------------------- Source/Player.lua | 37 +++++++++++++++++++++ Source/Tilemap.lua | 19 +++++++++++ Source/levels/level1.rocketbyte | 2 +- 4 files changed, 65 insertions(+), 52 deletions(-) create mode 100644 Source/Player.lua create mode 100644 Source/Tilemap.lua diff --git a/Source/Main.lua b/Source/Main.lua index 4d3e7ea..dd0eb61 100644 --- a/Source/Main.lua +++ b/Source/Main.lua @@ -5,71 +5,28 @@ import "CoreLibs/object" import "CoreLibs/graphics" import "CoreLibs/sprites" import "CoreLibs/math" +import "Player" +import "Tilemap" -- Music local song1 = playdate.sound.sampleplayer.new("sfx/song1") -- Font Setup local font = gfx.font.new("gfx/font") gfx.setFont(font) --- Tilemap Setup -local tileTable = gfx.imagetable.new("gfx/tiles") -local tilemap = gfx.tilemap.new() - -tilemap:setImageTable(tileTable) -tilemap:setSize(100,100) - -local level = json.decodeFile("levels/level1.rocketbyte") -for i = 1, #level.tiles, 1 do - tilemap:setTileAtPosition(level.tiles[i].x,level.tiles[i].y,level.tiles[i].t) -end - -gfx.sprite.addWallSprites(tilemap, {0,1}) - -local velocity = {x=0,y=0} -local lerpmnt = 0.5 -local grav = 0.2 - -local imgRocket = gfx.image.new("gfx/rocket") -assert(imgRocket) - - -local sprRocket = gfx.sprite.new(imgRocket) - -sprRocket:setCollideRect(7, 7, 14, 14) -sprRocket:add() gfx.setBackgroundColor(gfx.kColorBlack) song1:play(0, 1) +addTiles("levels/level1.rocketbyte") + +addPlayer(10,10) + function playdate.update() - if playdate.buttonIsPressed(playdate.kButtonUp) then - velocity.x = velocity.x + math.sin(math.rad(playdate.getCrankPosition())) - velocity.y = velocity.y - math.cos(math.rad(playdate.getCrankPosition())) - end - sprRocket:moveBy(velocity.x,velocity.y) + updatePlayer() - local cx, cy = gfx.getDrawOffset() - gfx.setDrawOffset(playdate.math.lerp(cx,(-sprRocket.x + 200), lerpmnt), playdate.math.lerp(cy,(-sprRocket.y + 120), lerpmnt)) - - sprRocket:setRotation(0) - sprRocket:update() - --print(#sprRocket:overlappingSprites()) - - sprRocket:setRotation(playdate.getCrankPosition()) - - velocity.y += grav --- local stuff = sprRocket:allOverlappingSprites() --- print(#stuff) - --- gfx.setDrawOffset(-sprRocket.x + 200, -sprRocket.y + 120) gfx.clear(gfx.kColorBlack) gfx.sprite.update() - tilemap:draw(2,1) - --gfx.drawText("AAAAAA LMAO 000 \nTEST",0,0) -end - -function _draw() - + drawTiles() end \ No newline at end of file diff --git a/Source/Player.lua b/Source/Player.lua new file mode 100644 index 0000000..71b59c4 --- /dev/null +++ b/Source/Player.lua @@ -0,0 +1,37 @@ +local velocity = {x=0,y=0} +local lerpmnt = 0.5 +local grav = 0.2 +local gfx = playdate.graphics +local active = false + +local imgRocket = gfx.image.new("gfx/rocket") +assert(imgRocket) +local sprRocket = gfx.sprite.new(imgRocket) +sprRocket:setCollideRect(7, 7, 14, 14) + +function addPlayer(x,y) + active = true + sprRocket:moveTo(x,y) + sprRocket:add() +end + +function updatePlayer() + if active then + if playdate.buttonIsPressed(playdate.kButtonUp) then + velocity.x = velocity.x + math.sin(math.rad(playdate.getCrankPosition())) + velocity.y = velocity.y - math.cos(math.rad(playdate.getCrankPosition())) + end + sprRocket:moveBy(velocity.x,velocity.y) + + local cx, cy = gfx.getDrawOffset() + gfx.setDrawOffset(playdate.math.lerp(cx,(-sprRocket.x + 200), lerpmnt), playdate.math.lerp(cy,(-sprRocket.y + 120), lerpmnt)) + + sprRocket:setRotation(0) + sprRocket:update() + --print(#sprRocket:overlappingSprites()) + + sprRocket:setRotation(playdate.getCrankPosition()) + + velocity.y += grav + end +end \ No newline at end of file diff --git a/Source/Tilemap.lua b/Source/Tilemap.lua new file mode 100644 index 0000000..85ea4e6 --- /dev/null +++ b/Source/Tilemap.lua @@ -0,0 +1,19 @@ +local tileTable = gfx.imagetable.new("gfx/tiles") +local tilemap = gfx.tilemap.new() +local gfx = playdate.graphics + +tilemap:setImageTable(tileTable) +tilemap:setSize(100,100) + +function addTiles(_file) + local level = json.decodeFile(_file) + for i = 1, #level.tiles, 1 do + tilemap:setTileAtPosition(level.tiles[i].x,level.tiles[i].y,level.tiles[i].t) + end + + gfx.sprite.addWallSprites(tilemap, {0,1}) +end + +function drawTiles() + tilemap:draw(0,0) +end \ No newline at end of file diff --git a/Source/levels/level1.rocketbyte b/Source/levels/level1.rocketbyte index 2b6a313..94b4f02 100644 --- a/Source/levels/level1.rocketbyte +++ b/Source/levels/level1.rocketbyte @@ -1 +1 @@ -{"tiles":[{"x":1,"y":1,"t":2},{"x":2,"y":1,"t":3},{"x":3,"y":1,"t":2}]} \ No newline at end of file +{"tiles":[{"x":1,"y":1,"t":2},{"x":2,"y":1,"t":3},{"x":3,"y":1,"t":3},{"x":4,"y":1,"t":2}]} \ No newline at end of file