diff --git a/config.lua b/config.lua index 0b8acf9..f556eed 100644 --- a/config.lua +++ b/config.lua @@ -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" diff --git a/pepe_runner_dx.lua b/pepe_runner_dx.lua index efe2921..a934340 100644 --- a/pepe_runner_dx.lua +++ b/pepe_runner_dx.lua @@ -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