Add a loss screen

This commit is contained in:
Juhani Krekelä 2019-06-30 11:32:50 +03:00
parent 5b5a72a780
commit 5d9e9113ea
1 changed files with 45 additions and 4 deletions

View File

@ -20,8 +20,8 @@ local last_key_pressed = nil
local last_direction_moved = nil
local move_repeat_counter = nil
local gamemodes = {normal = 0, won = 1, config = 2}
local game_mode = gamemodes.normal
local gamemodes = {normal = 0, won = 1, lost = 2, config = 3}
local game_mode = nil
local configuration_steps = {quit = -3, restart = -2, configure = -1}
local configuration_step = nil
@ -589,7 +589,6 @@ end
-- ------------------------------------------------------------------
function newGame()
game_mode = gamemodes.normal
generateCavern()
spawnPlayer()
@ -690,7 +689,7 @@ function step(direction)
if collidedPlayerSlime() then
if math.random(0, 1) == 0 then
newGame()
game_mode = gamemodes.lost
else
killSlime()
end
@ -819,6 +818,46 @@ function drawWin()
love.graphics.draw(win_image, x_offset, y_offset, 0, scale, scale)
end
function drawLoss()
local width = 54
local height = 140
local screen_width = love.graphics.getWidth()
local screen_height = love.graphics.getHeight()
local width_scale = screen_width / width
local height_scale = screen_height / height
local scale = math.min(width_scale, height_scale)
local x_offset = (screen_width - width * scale) / 2
local y_offset = (screen_height - height * scale) / 2
local vertices = {18, 20, 0, 40, 0, 60, 6, 80, 12, 100, 18, 120, 36, 120, 42, 100, 48, 80, 54, 60, 54, 40, 36, 20}
local transformed_vertices = {}
for i = 1, #vertices, 2 do
local x = vertices[i] * scale + x_offset
local y = vertices[i + 1] * scale + y_offset
transformed_vertices[i] = x
transformed_vertices[i + 1] = y
end
love.graphics.setColor(0.6, 0.3, 0.2)
love.graphics.polygon('fill', transformed_vertices)
love.graphics.setColor(1, 1, 1)
local lines = {27, 40, 27, 80, 18, 50, 36, 50}
for i = 1, #lines, 4 do
local sx = lines[i] * scale + x_offset
local sy = lines[i + 1] * scale + y_offset
local ex = lines[i + 2] * scale + x_offset
local ey = lines[i + 3] * scale + y_offset
love.graphics.line(sx, sy, ex, ey)
end
end
function drawConfig()
local text = nil
if configuration_step == configuration_steps.quit then
@ -926,6 +965,8 @@ function love.draw()
end
elseif game_mode == gamemodes.won then
drawWin()
elseif game_mode == gamemodes.lost then
drawLoss()
elseif game_mode == gamemodes.config then
drawConfig()
else