DX: jingles als estats no-jugables (title i enter name)

This commit is contained in:
2026-05-15 17:58:55 +02:00
parent 89dd0fc4e2
commit 8f8d71afcd
2 changed files with 40 additions and 0 deletions
+13
View File
@@ -97,3 +97,16 @@ skin = "native"
-- -- respawn, parpadejant blanc/groc.
-- temps.escala_step_frames = 6 -- frames entre cada cel·la nova de
-- -- l'escala lateral quan creix.
-- ====================================================================
-- JINGLES
-- ====================================================================
-- Es reproduixen una sola vegada quan entres al estat (title i enter name)
-- perque el motor d'ascii te 1 sol canal d'audio: les SFX tallarien la
-- musica si la posarem in-game.
-- music_on = false -- desactiva els jingles. Per defecte true.
-- Pots reescriure les melodies amb MML estandard (vore ASCII_API.md §4):
-- musica.title = "l4o4cegfedcceg"
-- musica.entername = "l2o5cegcegced"
+27
View File
@@ -151,6 +151,16 @@ estat_inici = 0
enter_name_idx = 1
fade = nil -- nil = sense transicio; o { phase="out"|"in", t=0, on_mid=... }
-- Jingles per als estats no-jugables: una sola reproduccio per entrada al
-- estat (no es repeteixen en bucle). El motor d'ascii nomes te un canal
-- d'audio, per aixo no posem musica in-game (les SFX la tallarien).
music_on = true -- false desactiva tots els jingles (les SFX continuen)
musica = {
title = "l4o4cegfedcceg",
entername = "l2o5cegcegced",
}
music_actual = nil -- id del jingle reproduit actualment (nil = silenci)
-- Estat de l'animacio de l'escala lateral (apareix quan no queden diners).
-- "idle" → encara no s'ha disparat per a este mapa
-- "growing" → en curs: cada escala_step_frames apareix una cel·la nova
@@ -249,6 +259,19 @@ function pintar_fade()
end
end
-- ====================================================================
-- JINGLES (una reproduccio per entrada a l'estat, sense bucle)
-- ====================================================================
-- Es crida set_music(id) al inici de cada estat: si l'id canvia, dispara
-- el jingle una vegada i ja esta. set_music(nil) silencia el canal d'audio.
function set_music(id)
if music_actual == id then return end
music_actual = id
if not music_on then return end
if id then play(musica[id]) else nosound() end
end
-- ====================================================================
-- SFX (l'original no tenia so — afegim els minims raonables)
-- ====================================================================
@@ -535,6 +558,7 @@ function init_title()
end
function update_title()
set_music("title")
if not fade_actiu() and btnp(KEY_SPACE) then
transicio(function()
inicialitzacio()
@@ -557,6 +581,7 @@ end
-- ----- GAME OVER -----
function update_gameover()
set_music(nil)
-- Render congelat: ultim estat del joc + overlay "GAME OVER"
neteja_fons()
pintar_mapa()
@@ -589,6 +614,7 @@ end
-- ----- ENTER NAME -----
function update_entername()
set_music("entername")
neteja_fons()
color(colors.title, colors.bg)
local t = textos.new_record
@@ -623,6 +649,7 @@ end
-- ----- PLAYING -----
function update_playing()
set_music(nil)
-- Durant un fade (cambi de fase), no processem input ni logica del joc:
-- nomes render (el dither es pinta a sobre des de update() global).
-- Nota: la transicio a game over es directa (sense fade), perque el