// 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 }