Files
vue-pult/server/barker-player.js
sasha 3e90269b0b Initial commit: Vue.js тир управления система
- Клиентская часть Vue 3 + Vite
- Серверная часть Node.js + WebSocket
- Система авторизации и смен
- Управление игровыми портами
- Поддержка тем (светлая/темная)
- Адаптивный дизайн

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-19 12:24:22 +03:00

96 lines
3.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Баркер плеер с поддержкой изменения громкости в реальном времени
const { UniversalAudioPlayer } = require('./universal-audio-player');
const path = require('path');
class BarkerPlayer {
constructor() {
this.players = new Map();
this.currentPlayer = null;
this.currentSoundId = null;
this.volume = 70;
this.isPlaying = false;
// Загружаем все звуки баркера
this.sounds = {
'1-1': './audio/barker/1-1.wav',
'1-2': './audio/barker/1-2.wav',
'1-3': './audio/barker/1-3.wav',
'1-4': './audio/barker/1-4.wav',
'1-5': './audio/barker/1-5.wav',
'2-1': './audio/barker/2-1.wav',
'2-2': './audio/barker/2-2.wav',
'2-3': './audio/barker/2-3.wav',
'2-4': './audio/barker/2-4.wav'
};
console.log('[BARKER-PLAYER] Инициализирован с поддержкой изменения громкости');
}
play(soundId, onStart, onEnd) {
// Останавливаем текущее воспроизведение
this.stop();
if (!this.sounds[soundId]) {
console.error('[BARKER-PLAYER] Неизвестный звук:', soundId);
return;
}
console.log('[BARKER-PLAYER] Воспроизведение звука:', soundId);
// Создаем новый плеер для этого звука
const player = new UniversalAudioPlayer();
player.setVolume(this.volume);
this.currentPlayer = player;
this.currentSoundId = soundId;
this.isPlaying = true;
// Получаем абсолютный путь к файлу
const filePath = path.resolve(__dirname, this.sounds[soundId]);
// Вызываем callback начала
if (onStart) onStart();
// Запускаем воспроизведение
player.play(filePath);
// Отслеживаем окончание воспроизведения
const checkInterval = setInterval(() => {
if (!player.isPlaying) {
clearInterval(checkInterval);
this.isPlaying = false;
this.currentPlayer = null;
this.currentSoundId = null;
console.log('[BARKER-PLAYER] Воспроизведение завершено:', soundId);
if (onEnd) onEnd();
}
}, 100);
}
stop() {
if (this.currentPlayer) {
console.log('[BARKER-PLAYER] Остановка воспроизведения');
this.currentPlayer.stop();
this.currentPlayer = null;
this.currentSoundId = null;
this.isPlaying = false;
}
}
setVolume(volume) {
this.volume = Math.max(0, Math.min(100, volume));
console.log('[BARKER-PLAYER] Установка громкости:', this.volume);
// Применяем громкость к текущему плееру если он играет
if (this.currentPlayer && this.isPlaying) {
this.currentPlayer.setVolume(this.volume);
console.log('[BARKER-PLAYER] Громкость применена к активному звуку');
}
}
getVolume() {
return this.volume;
}
}
module.exports = BarkerPlayer;