summaryrefslogtreecommitdiff
path: root/main.lua
diff options
context:
space:
mode:
Diffstat (limited to 'main.lua')
-rw-r--r--main.lua57
1 files changed, 39 insertions, 18 deletions
diff --git a/main.lua b/main.lua
index 5ac09d0..7a7ecef 100644
--- a/main.lua
+++ b/main.lua
@@ -7,6 +7,8 @@ local map = require "logic.map"
local controller = require "logic.controller"
local translator = require "i18n.translator"
+local gameState = "playing" -- 初始状态为playing
+
function love.load()
G = {}
-- load font
@@ -28,33 +30,52 @@ function love.load()
end
function love.draw()
- RenderManager:draw()
+ if gameState == "playing" then
+ RenderManager:draw()
+ elseif gameState == "gameOver" then
+ -- show game over screen
+ love.graphics.setColor(1, 0, 0, 1)
+ love.graphics.printf(translator.T("gameOver"), 0, love.graphics.getHeight() / 2 - 20, love.graphics.getWidth(), "center")
+ love.graphics.setColor(1, 1, 1, 1)
+ love.graphics.printf(translator.T("pressSpaceToRestart"), 0, love.graphics.getHeight() / 2 + 20, love.graphics.getWidth(), "center")
+ -- play game over sound
+ audio.play("gameover")
+ end
end
function love.update(dt)
- -- game state updates
- local gameStates = { G.BodyLifeCycleManager, G.world, G.currentRoom, G.player }
- for _, state in ipairs(gameStates) do
- state:update(dt)
- end
+ if gameState == "playing" then
+ -- game state updates
+ local gameStates = { G.BodyLifeCycleManager, G.world, G.currentRoom, G.player }
+ for _, state in ipairs(gameStates) do
+ state:update(dt)
+ end
- -- game logic updates
- local updates = { map, controller, speaker }
- for _, entity in ipairs(updates) do
- entity.update(dt)
- end
+ -- game logic updates
+ local updates = { map, controller, speaker }
+ for _, entity in ipairs(updates) do
+ entity.update(dt)
+ end
- -- check if game has ended
- if not G.player:isAlive() then
- initGame()
- end
+ -- check if game has ended
+ if not G.player:isAlive() then
+ gameState = "gameOver"
+ audio.stopAll()
+ end
- -- time update
- G.time = G.time + dt
+ -- time update
+ G.time = G.time + dt
+ end
end
function love.keypressed(key)
- controller.keypressed(key)
+ -- press space to restart gane
+ if gameState == "gameOver" and key == "space" then
+ initGame()
+ gameState = "playing"
+ else
+ controller.keypressed(key)
+ end
end
function love.mousereleased(x, y, button)