92 lines
2.9 KiB
JavaScript
92 lines
2.9 KiB
JavaScript
// eventHandlers.js - UI event handlers
|
|
import * as config from '../config.js';
|
|
import * as state from './state.js';
|
|
import * as ui from '../ui/ui.js';
|
|
import audioManager from '../ui/audio.js';
|
|
import camera from '../ui/camera.js';
|
|
import { togglePauseResume, fullResetApp } from './gameActions.js';
|
|
import { handlePlayerFormSubmit, handleDeletePlayer } from './playerManager.js';
|
|
|
|
export function handleGameButtonClick() {
|
|
audioManager.play('buttonClick');
|
|
togglePauseResume();
|
|
}
|
|
|
|
export function handleSetupButtonClick() {
|
|
audioManager.play('buttonClick');
|
|
if (state.getGameState() === config.GAME_STATES.RUNNING) {
|
|
alert('Please pause the game before editing players.');
|
|
return;
|
|
}
|
|
const currentPlayer = state.getCurrentPlayer();
|
|
if (!currentPlayer) {
|
|
console.warn("Edit clicked but no current player?");
|
|
return; // Or show Add Player modal?
|
|
}
|
|
camera.stopStream(); // Ensure camera is off before opening modal
|
|
ui.showPlayerModal(false, currentPlayer);
|
|
}
|
|
|
|
export function handleAddPlayerButtonClick() {
|
|
audioManager.play('buttonClick');
|
|
if (state.getGameState() === config.GAME_STATES.RUNNING) {
|
|
alert('Please pause the game before adding players.');
|
|
return;
|
|
}
|
|
camera.stopStream(); // Ensure camera is off before opening modal
|
|
ui.showPlayerModal(true);
|
|
}
|
|
|
|
export function handleResetButtonClick() {
|
|
audioManager.play('buttonClick');
|
|
if (state.getGameState() === config.GAME_STATES.RUNNING) {
|
|
alert('Please pause the game before resetting.');
|
|
return;
|
|
}
|
|
ui.showResetModal();
|
|
}
|
|
|
|
export function handlePlayerModalCancel() {
|
|
audioManager.play('buttonClick');
|
|
ui.hidePlayerModal();
|
|
camera.stopStream(); // Make sure camera turns off
|
|
}
|
|
|
|
export function handleResetConfirm() {
|
|
audioManager.play('buttonClick');
|
|
fullResetApp();
|
|
}
|
|
|
|
export function handleResetCancel() {
|
|
audioManager.play('buttonClick');
|
|
ui.hideResetModal();
|
|
}
|
|
|
|
export function handleCameraButtonClick(event) {
|
|
event.preventDefault(); // Prevent form submission if inside form
|
|
audioManager.play('buttonClick');
|
|
camera.open(); // Open the camera interface
|
|
}
|
|
|
|
// --- Timer Callbacks ---
|
|
export function handleTimerTick() {
|
|
// Timer module already updated the state, just need to redraw UI
|
|
ui.renderPlayers();
|
|
}
|
|
|
|
export function handlePlayerSwitchOnTimer(newPlayerIndex) {
|
|
// Timer detected current player ran out, found next player
|
|
console.log(`Timer switching to player index: ${newPlayerIndex}`);
|
|
// Import switchToPlayer dynamically to avoid circular dependency
|
|
import('./playerManager.js').then(module => {
|
|
module.switchToPlayer(newPlayerIndex);
|
|
});
|
|
// Sound is handled in switchToPlayer
|
|
}
|
|
|
|
// --- Camera Callback ---
|
|
export function handleCameraCapture(imageDataUrl) {
|
|
console.log("Image captured");
|
|
ui.updateImagePreviewFromDataUrl(imageDataUrl);
|
|
// Camera module already closed the camera UI
|
|
}
|