fix i cheto sdelal

This commit is contained in:
aurinex
2025-12-13 20:14:24 +05:00
parent d9a3a1cd1f
commit abb45c3838
7 changed files with 513 additions and 7 deletions

View File

@ -1,13 +1,52 @@
import buySound from '../assets/sounds/buy.mp3';
let buyAudio: HTMLAudioElement | null = null;
let unlocked = false;
export const primeSounds = () => {
try {
if (unlocked) return;
if (!buyAudio) {
buyAudio = new Audio(buySound);
buyAudio.volume = 0; // тихо, чтобы не слышно
}
// попытка "разлочить" аудио в контексте user gesture
const p = buyAudio.play();
if (p && typeof (p as Promise<void>).then === 'function') {
(p as Promise<void>)
.then(() => {
buyAudio?.pause();
if (buyAudio) buyAudio.currentTime = 0;
if (buyAudio) buyAudio.volume = 0.6; // вернуть норм громкость
unlocked = true;
})
.catch(() => {
// если заблокировано — попробуем снова при следующем клике
});
} else {
// на всякий: если play синхронный
buyAudio.pause();
buyAudio.currentTime = 0;
buyAudio.volume = 0.6;
unlocked = true;
}
} catch {
// не ломаем UI
}
};
export const playBuySound = () => {
if (!buyAudio) {
buyAudio = new Audio(buySound);
buyAudio.volume = 0.6;
}
try {
if (!buyAudio) {
buyAudio = new Audio(buySound);
buyAudio.volume = 0.6;
}
buyAudio.currentTime = 0;
buyAudio.play().catch(() => {});
buyAudio.currentTime = 0;
buyAudio.play().catch(() => {});
} catch {
// игнор
}
};