Mercurial > vanillian
diff main.lua @ 43:53ae6905cfff
Start and end screens
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sun, 16 Dec 2012 18:49:47 +0100 |
| parents | 4feeb8cb736e |
| children |
line wrap: on
line diff
--- a/main.lua Sun Dec 16 18:01:05 2012 +0100 +++ b/main.lua Sun Dec 16 18:49:47 2012 +0100 @@ -17,6 +17,10 @@ local LAST_MUSIC local TEXT = "" local SOUNDS = {} +local GAME_OVER = false +local SCENE = 'start' +local START_IMAGE +local END_IMAGE function newMob(x, y, cells) @@ -47,10 +51,21 @@ if s.properties.text then TEXT = s.properties.text SOUNDS.talk:play() + if s.properties.doom then + SOUNDS.bump:play() + GAME_OVER = true + end else if s.properties.exit then - load_map(s.properties.exit) - TEXT = s.properties.exit + if GAME_OVER then + SCENE = 'end' + if MUSIC then + MUSIC:stop() + end + else + load_map(s.properties.exit) + TEXT = s.properties.exit + end else SOUNDS.bump:play() TEXT = "" @@ -93,11 +108,15 @@ function love.load() love.graphics.setFont(love.graphics.newFont('pf_tempesta_seven_extended_bold.ttf')) + START_IMAGE = love.graphics.newImage('start.png') + END_IMAGE = love.graphics.newImage('end.png') SHADOW_IMAGE = love.graphics.newImage('shadow.png') MOBS_IMAGE = love.graphics.newImage('mobs.png') SOUNDS.bump = love.audio.newSource('bump.xm', 'static') SOUNDS.talk = love.audio.newSource('talk.xm', 'static') - load_map('level01.tmx') + MUSIC = love.audio.newSource('labz.xm', 'static') + MUSIC:setLooping(true) + MUSIC:play() end function load_map(filename) @@ -140,33 +159,60 @@ end function love.draw() - love.graphics.translate(math.floor(tx), math.floor(ty)) - MAP:autoDrawRange(math.floor(tx), math.floor(ty), 1, 0) - MAP:draw() - for k, shadow in pairs(SHADOWS) do - shadow:draw() - end - for k, sprite in pairs(SPRITES) do - sprite:draw() - end - for i, layer in pairs(MAP.layerOrder) do - if layer.properties.overlay then - layer:draw() + if SCENE == 'start' then + love.graphics.draw(START_IMAGE, 0, 0) + else + if SCENE == 'end' then + love.graphics.draw(END_IMAGE, 0, 0) + else + love.graphics.translate(math.floor(tx), math.floor(ty)) + MAP:autoDrawRange(math.floor(tx), math.floor(ty), 1, 0) + MAP:draw() + for k, shadow in pairs(SHADOWS) do + shadow:draw() + end + for k, sprite in pairs(SPRITES) do + sprite:draw() + end + for i, layer in pairs(MAP.layerOrder) do + if layer.properties.overlay then + layer:draw() + end + end + love.graphics.translate(-math.floor(tx), -math.floor(ty)) + draw_text(TEXT) end end - love.graphics.translate(-math.floor(tx), -math.floor(ty)) - draw_text(TEXT) end function love.update(dt) - for k, sprite in pairs(SPRITES) do - sprite:update(dt) + if SCENE == 'start' then + if love.keyboard.isDown(" ") then + SCENE = 'game' + load_map('level01.tmx') + end + else + if SCENE == 'end' then + if love.keyboard.isDown(" ") then + GAME_OVER = false + else + if not GAME_OVER then + SCENE = 'start' + end + end + else + for k, sprite in pairs(SPRITES) do + sprite:update(dt) + end + table.sort(SPRITES, function (a, b) return a.y < b.y end) + end end if love.keyboard.isDown("m") then - if MUSIC:isStopped() then MUSIC:play() - else MUSIC:stop() - end + if MUSIC:isStopped() then + MUSIC:play() + else + MUSIC:stop() + end end - table.sort(SPRITES, function (a, b) return a.y < b.y end) end
