diff --git a/assets/sounds/effects/coin.ogg b/assets/audio/effects/coin.ogg similarity index 100% rename from assets/sounds/effects/coin.ogg rename to assets/audio/effects/coin.ogg diff --git a/assets/sounds/effects/die.ogg b/assets/audio/effects/die.ogg similarity index 100% rename from assets/sounds/effects/die.ogg rename to assets/audio/effects/die.ogg diff --git a/assets/sounds/effects/explosion.ogg b/assets/audio/effects/explosion.ogg similarity index 100% rename from assets/sounds/effects/explosion.ogg rename to assets/audio/effects/explosion.ogg diff --git a/assets/sounds/effects/jump.ogg b/assets/audio/effects/jump.ogg similarity index 100% rename from assets/sounds/effects/jump.ogg rename to assets/audio/effects/jump.ogg diff --git a/assets/sounds/effects/powerup.ogg b/assets/audio/effects/powerup.ogg similarity index 100% rename from assets/sounds/effects/powerup.ogg rename to assets/audio/effects/powerup.ogg diff --git a/assets/sounds/effects/revive.ogg b/assets/audio/effects/revive.ogg similarity index 100% rename from assets/sounds/effects/revive.ogg rename to assets/audio/effects/revive.ogg diff --git a/assets/sounds/effects/select.ogg b/assets/audio/effects/select.ogg similarity index 100% rename from assets/sounds/effects/select.ogg rename to assets/audio/effects/select.ogg diff --git a/assets/sounds/effects/shoot.ogg b/assets/audio/effects/shoot.ogg similarity index 100% rename from assets/sounds/effects/shoot.ogg rename to assets/audio/effects/shoot.ogg diff --git a/assets/sounds/music/track0.ogg b/assets/audio/music/track0.ogg similarity index 100% rename from assets/sounds/music/track0.ogg rename to assets/audio/music/track0.ogg diff --git a/assets/sounds/music/track1.ogg b/assets/audio/music/track1.ogg similarity index 100% rename from assets/sounds/music/track1.ogg rename to assets/audio/music/track1.ogg diff --git a/assets/sounds/music/track10.ogg b/assets/audio/music/track10.ogg similarity index 100% rename from assets/sounds/music/track10.ogg rename to assets/audio/music/track10.ogg diff --git a/assets/sounds/music/track11.ogg b/assets/audio/music/track11.ogg similarity index 100% rename from assets/sounds/music/track11.ogg rename to assets/audio/music/track11.ogg diff --git a/assets/sounds/music/track2.ogg b/assets/audio/music/track2.ogg similarity index 100% rename from assets/sounds/music/track2.ogg rename to assets/audio/music/track2.ogg diff --git a/assets/sounds/music/track3.ogg b/assets/audio/music/track3.ogg similarity index 100% rename from assets/sounds/music/track3.ogg rename to assets/audio/music/track3.ogg diff --git a/assets/sounds/music/track4.ogg b/assets/audio/music/track4.ogg similarity index 100% rename from assets/sounds/music/track4.ogg rename to assets/audio/music/track4.ogg diff --git a/assets/sounds/music/track5.ogg b/assets/audio/music/track5.ogg similarity index 100% rename from assets/sounds/music/track5.ogg rename to assets/audio/music/track5.ogg diff --git a/assets/sounds/music/track6.ogg b/assets/audio/music/track6.ogg similarity index 100% rename from assets/sounds/music/track6.ogg rename to assets/audio/music/track6.ogg diff --git a/assets/sounds/music/track7.ogg b/assets/audio/music/track7.ogg similarity index 100% rename from assets/sounds/music/track7.ogg rename to assets/audio/music/track7.ogg diff --git a/assets/sounds/music/track8.ogg b/assets/audio/music/track8.ogg similarity index 100% rename from assets/sounds/music/track8.ogg rename to assets/audio/music/track8.ogg diff --git a/assets/sounds/music/track9.ogg b/assets/audio/music/track9.ogg similarity index 100% rename from assets/sounds/music/track9.ogg rename to assets/audio/music/track9.ogg diff --git a/assets/images/backgrounds/gbyeblack.png b/assets/images/backgrounds/gbyeblack.png new file mode 100644 index 0000000..17a6d62 Binary files /dev/null and b/assets/images/backgrounds/gbyeblack.png differ diff --git a/assets/images/backgrounds/bg0.png b/assets/images/backgrounds/level1.png similarity index 100% rename from assets/images/backgrounds/bg0.png rename to assets/images/backgrounds/level1.png diff --git a/assets/images/backgrounds/level1_hires.png b/assets/images/backgrounds/level1_hires.png new file mode 100644 index 0000000..b9d8702 Binary files /dev/null and b/assets/images/backgrounds/level1_hires.png differ diff --git a/libs/hump b/libs/hump new file mode 160000 index 0000000..08937cc --- /dev/null +++ b/libs/hump @@ -0,0 +1 @@ +Subproject commit 08937cc0ecf72d1a964a8de6cd552c5e136bf0d4 diff --git a/main.lua b/main.lua index 616ae29..113f2ac 100644 --- a/main.lua +++ b/main.lua @@ -4,12 +4,14 @@ peachy = require("libs/peachy") --load player player = require("modules/player") +--load hump camera +Camera = require("libs/hump/camera") +camera = Camera(player.x, player.y) + --load content_loader local content_loader = require("modules/content_loader") spritesheets = content_loader.spritesheets sound_effects = content_loader.sound_effects -backgrounds = content_loader.backgrounds -music = content_loader.music --load globals local globals = require("modules/globals") @@ -25,10 +27,13 @@ update_mod = require("modules/update_callback") local update_callback = update_mod.update local updateinit = update_mod.updateinit -drawerinit(spritesheets, player, game) -updateinit(game) +drawerinit(spritesheets, player, game, camera) +updateinit(game, camera) player:init(sound_effects, spritesheets, game) +--play music for level +game:getcurlevel().music:play() + function love.draw() draw_callback() end diff --git a/modules/content_loader.lua b/modules/content_loader.lua index daa93c7..06b90a3 100644 --- a/modules/content_loader.lua +++ b/modules/content_loader.lua @@ -15,22 +15,13 @@ spritesheets["player_die"] = peachy.new("assets/images/spritesheets/player.json" --load player DEFAULT spritesheets["player_default"] = peachy.new("assets/images/spritesheets/player.json", love.graphics.newImage("assets/images/spritesheets/player.png"), "Default") ---load backgrounds -local backgrounds = {} -for i, file in ipairs(love.filesystem.getDirectoryItems("assets/images/backgrounds")) do - if file:find(".png") then - --load backgrounds - print(i) - backgrounds[i] = love.graphics.newImage("assets/images/backgrounds/"..file) - end -end --load sound effects local sound_effects = {} -for i, file in ipairs(love.filesystem.getDirectoryItems("assets/sounds/effects")) do +for i, file in ipairs(love.filesystem.getDirectoryItems("assets/audio/effects")) do if file:find(".ogg") then --load sound effects local keyname = file:gsub(".ogg", "") - sound = love.audio.newSource("assets/sounds/effects/"..file, "static") + sound = love.audio.newSource("assets/audio/effects/"..file, "static") sound_effects[keyname] = {} sound_effects[keyname].volume = 1 sound_effects[keyname].timer = love.timer.getTime() @@ -48,17 +39,7 @@ for i, file in ipairs(love.filesystem.getDirectoryItems("assets/sounds/effects") end end end ---load music -local music = {} -for i, file in ipairs(love.filesystem.getDirectoryItems("assets/sounds/music")) do - if file:find(".ogg") then - --load music - music[file:sub(1, -5)] = love.audio.newSource("assets/sounds/music/"..file, "stream") - end -end return { spritesheets = spritesheets, - backgrounds = backgrounds, sound_effects = sound_effects, - music = music } \ No newline at end of file diff --git a/modules/draw_callback.lua b/modules/draw_callback.lua index 6205b1e..93c92e9 100644 --- a/modules/draw_callback.lua +++ b/modules/draw_callback.lua @@ -1,16 +1,19 @@ local spritesheets = {} local player = {} local game = {} +local camera = {} -function drawerinit(spritesheetst, playert, gamex) +function drawerinit(spritesheetst, playert, gamex, camerax) spritesheets = spritesheetst player = playert game = gamex + camera = camerax end local function draw() + camera:attach() --draw background - love.graphics.draw(backgrounds[game.level], 0, 0) + love.graphics.draw(game.levels[game.level].background, 0, 0) --draw player_animation player.animation:draw(player.x, player.y) if player.state == "idle" then @@ -26,6 +29,7 @@ local function draw() else spritesheets["player_default"]:draw(player.x, player.y) end + camera:detach() end return { drawerinit = drawerinit, diff --git a/modules/globals.lua b/modules/globals.lua index 97e8c6f..f523384 100644 --- a/modules/globals.lua +++ b/modules/globals.lua @@ -6,6 +6,19 @@ game.title = "Weeeeeeeee" game.version = "0.0.1" game.fullscreen = false game.level = 1 +game.level_count = 1 +game.levels = {} +game.getcurlevel = function(self) + return self.levels[self.level] +end +for i = 1, game.level_count, 1 do + game.levels[i] = {} + game.levels[i].background = love.graphics.newImage("assets/images/backgrounds/level".. i .."_hires.png") + game.levels[i].width = game.levels[i].background:getWidth() + game.levels[i].height = game.levels[i].background:getHeight() + game.levels[i].music = love.audio.newSource("assets/audio/music/track".. i ..".ogg", "static") + game.levels[i].music:setLooping(true) +end return { game = game diff --git a/modules/player.lua b/modules/player.lua index 39465e7..096d322 100644 --- a/modules/player.lua +++ b/modules/player.lua @@ -14,11 +14,13 @@ player.init = function(self, sound_effects, spritesheets, game) self.sound_effects = sound_effects self.spritesheets = spritesheets self.game = game + self.x = self.game.width / 2 + 8 + self.y = self.game.height + 8 player.animation = spritesheets["player_idle"] end player.walk_right = function(self, dt) - if self.x < self.game.width - self.width and self.alive then + if self.x < self.game:getcurlevel().width - self.width - self.game.width - 8 and self.alive then self.x = self.x + self.speed * dt self.state = "walk_right" self.direction = "right" @@ -26,7 +28,7 @@ player.walk_right = function(self, dt) end end player.walk_left = function(self, dt) - if self.x > 0 and self.alive then + if self.x > self.game.width / 2 + 8 and self.alive then self.x = self.x - self.speed * dt self.state = "walk_left" self.direction = "left" @@ -34,7 +36,7 @@ player.walk_left = function(self, dt) end end player.jump = function(self, dt) - if self.y > 0 and self.alive then + if self.y > self.game.height / 2 + 8 and self.alive then self.y = self.y - self.jump_height * dt self.state = "jump" self.animation = self.spritesheets["player_jump"] @@ -42,7 +44,7 @@ player.jump = function(self, dt) end end player.down = function(self, dt) - if self.y < self.game.height - self.height and self.alive then + if self.y < self.game:getcurlevel().height - self.height - self.game.height / 2 - 8 and self.alive then self.y = self.y + self.jump_height * dt self.state = "jump" self.animation = self.spritesheets["player_jump"] diff --git a/modules/update_callback.lua b/modules/update_callback.lua index 4e63316..1e70b9e 100644 --- a/modules/update_callback.lua +++ b/modules/update_callback.lua @@ -1,7 +1,8 @@ local game = {} - -local function updateinit(gamex) +local camera = {} +local function updateinit(gamex, camerax) game = gamex + camera = camerax end local function update(dt) @@ -48,8 +49,13 @@ local function update(dt) --revive player player.spritesheets["player_die"]:setFrame(1) player:revive(dt) + end + if key("x") then + print("x: \""..player.x.."\"; y: \""..player.y.."\"") end end + local dx,dy = (player.x - camera.x) / 2, (player.y - camera.y) / 2 + camera:move(dx, dy) end return { update = update,