fix shalom
This commit is contained in:
20
app.js
20
app.js
@@ -191,7 +191,7 @@
|
|||||||
},
|
},
|
||||||
// ritorna una funzione stop(fadeSec) per interromperlo (utile per il loop)
|
// ritorna una funzione stop(fadeSec) per interromperlo (utile per il loop)
|
||||||
play(key, opts = {}) {
|
play(key, opts = {}) {
|
||||||
const { vol = 0.8, loop = false, fallback } = opts;
|
const { vol = 0.8, loop = false, fallback, gain } = opts;
|
||||||
if (!Audio.on) return () => {};
|
if (!Audio.on) return () => {};
|
||||||
const base = this.el[key];
|
const base = this.el[key];
|
||||||
if (!base || this.ready[key] === false) {
|
if (!base || this.ready[key] === false) {
|
||||||
@@ -201,6 +201,16 @@
|
|||||||
const a = loop ? base : base.cloneNode(); // clone -> più play sovrapposti
|
const a = loop ? base : base.cloneNode(); // clone -> più play sovrapposti
|
||||||
a.loop = loop;
|
a.loop = loop;
|
||||||
a.volume = vol;
|
a.volume = vol;
|
||||||
|
// Boost oltre il max (1.0) solo per QUESTO suono: instrada l'elemento in
|
||||||
|
// Web Audio con un GainNode dedicato (non tocca il volume globale).
|
||||||
|
if (gain && gain > 1 && Audio.ctx) {
|
||||||
|
try {
|
||||||
|
const src = Audio.ctx.createMediaElementSource(a);
|
||||||
|
const g = Audio.ctx.createGain();
|
||||||
|
g.gain.value = gain;
|
||||||
|
src.connect(g).connect(Audio.ctx.destination);
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
a.currentTime = 0;
|
a.currentTime = 0;
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
@@ -442,7 +452,8 @@
|
|||||||
showShalom(o, "mode-fire");
|
showShalom(o, "mode-fire");
|
||||||
screenShake();
|
screenShake();
|
||||||
const stop = Samples.play("leone", {
|
const stop = Samples.play("leone", {
|
||||||
vol: 0.9,
|
vol: 1.0,
|
||||||
|
gain: 2.5, // ruggito più forte del resto (boost dedicato)
|
||||||
fallback: () => Audio.jackpot(),
|
fallback: () => Audio.jackpot(),
|
||||||
});
|
});
|
||||||
await shalomWait(null, 3500, o);
|
await shalomWait(null, 3500, o);
|
||||||
@@ -455,15 +466,18 @@
|
|||||||
const o = ensureShalomOverlay();
|
const o = ensureShalomOverlay();
|
||||||
const v = o.querySelector(".shalom-video");
|
const v = o.querySelector(".shalom-video");
|
||||||
showShalom(o, "mode-video");
|
showShalom(o, "mode-video");
|
||||||
|
v.style.visibility = "hidden"; // primi 3s: solo musica, video nascosto
|
||||||
const stop = Samples.play("shalom", {
|
const stop = Samples.play("shalom", {
|
||||||
vol: 0.9,
|
vol: 0.9,
|
||||||
fallback: () => Audio.jackpot(),
|
fallback: () => Audio.jackpot(),
|
||||||
});
|
});
|
||||||
|
await sleep(3000); // dopo 3s il video appare E parte insieme
|
||||||
|
v.style.visibility = "";
|
||||||
try {
|
try {
|
||||||
v.currentTime = 0;
|
v.currentTime = 0;
|
||||||
await v.play();
|
await v.play();
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
await shalomWait(v, 14000, o);
|
await shalomWait(v, 17000, o); // 3s musica + 17s video = 20s (o tap per skippare)
|
||||||
if (stop) stop(0.4);
|
if (stop) stop(0.4);
|
||||||
hideShalom(o);
|
hideShalom(o);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user