60 lines
1.5 KiB
Lua
60 lines
1.5 KiB
Lua
--- @section GameOverWindow
|
|
local GAME_OVER_ART = [[
|
|
_###_ __#__ #___# #####
|
|
#____ _#_#_ ##_## #____
|
|
#_### ##### #_#_# ####_
|
|
#___# #___# #___# #____
|
|
_###_ #___# #___# #####
|
|
|
|
_###_ #___# ##### ####_
|
|
#___# #___# #____ #___#
|
|
#___# _#_#_ ####_ ####_
|
|
#___# __#__ #____ #_#__
|
|
_###_ __#__ ##### #__##
|
|
]]
|
|
|
|
local REASON_MESSAGES = {
|
|
ism = "Your impostor syndrome consumed you.",
|
|
bm = "You burned out like a cheap candle.",
|
|
days = "100 days passed. The cycle never broke.",
|
|
}
|
|
|
|
--- Shows the game over screen.
|
|
--- @within GameOverWindow
|
|
--- @param reason string One of "ism", "bm", "days".
|
|
function GameOverWindow.show(reason)
|
|
GameOverWindow.reason = reason
|
|
Context.game_in_progress = false
|
|
Glitch.show()
|
|
Window.set_current("game_over")
|
|
end
|
|
|
|
--- Draws the game over screen.
|
|
--- @within GameOverWindow
|
|
function GameOverWindow.draw()
|
|
cls(Config.colors.black)
|
|
|
|
local cx = Config.screen.width / 2
|
|
local bounds = AsciiArt.draw(GAME_OVER_ART, {
|
|
char_w = 4,
|
|
char_h = 6,
|
|
line_gap = 1,
|
|
word_gap = 10,
|
|
color = Config.colors.red,
|
|
})
|
|
|
|
local msg = REASON_MESSAGES[GameOverWindow.reason] or ""
|
|
Print.text_center(msg, cx, bounds.bottom + 8, Config.colors.white)
|
|
Print.text_center("Press Z to restart", cx, Config.screen.height - 10, Config.colors.light_grey)
|
|
end
|
|
|
|
--- Updates the game over screen logic.
|
|
--- @within GameOverWindow
|
|
function GameOverWindow.update()
|
|
if Input.select() then
|
|
Context.reset()
|
|
MenuWindow.refresh_menu_items()
|
|
Window.set_current("menu")
|
|
end
|
|
end
|