Files
pepe-el-pintor-ascii/pepe_pintor_dx/scenes/titol.lua
T

86 lines
2.2 KiB
Lua

-- Escena 'titol' — menu principal.
--
-- Tot esta basat en delta time: parpelleig de cursor, animacio del
-- subtitol, etc. La llista d'opcions es extensible: nomes cal afegir
-- una entrada amb un text i una funcio.
local M = {}
local TITOL = "PEPE EL PINTOR DX"
local SUBTITOL = "port lliure de PINTOR3 (Sergi Valor, 1999)"
local PERIODE_CURSOR = 0.35
local manager, input
local temps = 0
local cursor = 1
local opcions = {}
local function fes_opcions()
opcions = {
{
text = "COMENCAR PARTIDA",
accio = function() manager.canvia("joc") end,
},
-- A futur: CONTROLS, CREDITS, OPCIONS, EIXIR...
}
end
function M.entra(servicis, _args)
manager = servicis.manager
input = servicis.input
temps = 0
cursor = 1
fes_opcions()
end
function M.update(dt)
temps = temps + dt
if input.acaba_premuda("amunt") then
cursor = cursor - 1
if cursor < 1 then cursor = #opcions end
end
if input.acaba_premuda("avall") then
cursor = cursor + 1
if cursor > #opcions then cursor = 1 end
end
if input.acaba_premuda("accept") then
local op = opcions[cursor]
if op and op.accio then op.accio() end
end
end
local function centra(text, y, ink, paper)
local x = math.floor((40 - #text) / 2)
color(ink, paper)
print(text, x, y)
end
function M.draw()
color(COLOR_WHITE, COLOR_BLACK)
cls()
-- Marc decoratiu — barres horitzontals de pintura.
color(COLOR_LIGHT_RED, COLOR_BLACK)
print(string.rep(chr(220), 40), 0, 1)
print(string.rep(chr(223), 40), 0, 27)
centra(TITOL, 6, COLOR_YELLOW, COLOR_BLACK)
centra(SUBTITOL, 8, COLOR_LIGHT_GRAY, COLOR_BLACK)
-- Menu d'opcions
local y0 = 14
for i, op in ipairs(opcions) do
local actiu = (i == cursor)
local visible_cursor = math.floor(temps / PERIODE_CURSOR) % 2 == 0
local marca = (actiu and visible_cursor) and chr(16) or " "
local text = marca .. " " .. op.text
local ink = actiu and COLOR_LIGHT_GREEN or COLOR_LIGHT_GRAY
centra(text, y0 + (i - 1) * 2, ink, COLOR_BLACK)
end
centra("amunt/avall + enter", 24, COLOR_DARK_GRAY, COLOR_BLACK)
end
return M