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