diff --git a/public/game.js b/public/game.js index 36deab0..1c7b731 100644 --- a/public/game.js +++ b/public/game.js @@ -1616,8 +1616,7 @@ } // Настраиваем drag-and-drop для кузницы, если она открыта - const sidebar = $('forge-sidebar'); - if (sidebar && !sidebar.classList.contains('hidden')) { + if (isForgeOpen) { setTimeout(() => setupForgeDragAndDrop(state), 100); } } @@ -1640,28 +1639,70 @@ clearError(); }); - $('btn-host')?.addEventListener('click', () => { - clearError(); - const name = ($('host-name')?.value || '').trim() || 'Игрок 1'; - const currentHost = window.location.hostname; - let url = window.location.origin; - if (currentHost !== 'localhost' && currentHost !== '127.0.0.1') { - url = window.location.origin; - } + const btnHost = $('btn-host'); + if (btnHost) { + // Удаляем старые обработчики, если есть + const newBtn = btnHost.cloneNode(true); + btnHost.parentNode.replaceChild(newBtn, btnHost); - if (!socket || !socket.connected) { - connect(url); - socket.once('connect', () => { + newBtn.addEventListener('click', function(e) { + e.preventDefault(); + e.stopPropagation(); + console.log('Кнопка "Создать комнату" нажата'); + clearError(); + const name = ($('host-name')?.value || '').trim() || 'Игрок 1'; + console.log('Имя игрока:', name); + const currentHost = window.location.hostname; + let url = window.location.origin; + if (currentHost !== 'localhost' && currentHost !== '127.0.0.1') { + url = window.location.origin; + } + + if (!socket || !socket.connected) { + console.log('Подключение к серверу:', url); + connect(url); + socket.once('connect', () => { + console.log('Подключено, создаём комнату'); + socket.emit('createRoom', name); + }); + socket.once('connect_error', (e) => { + console.error('Ошибка подключения:', e); + showError('Не удалось подключиться к серверу. Проверьте, что сервер запущен.'); + }); + } else { + console.log('Уже подключен, создаём комнату'); + // Уже подключен, сразу отправляем socket.emit('createRoom', name); - }); - socket.once('connect_error', (e) => { - showError('Не удалось подключиться к серверу. Проверьте, что сервер запущен.'); - }); - } else { - // Уже подключен, сразу отправляем - socket.emit('createRoom', name); - } - }); + } + }); + + // Также добавляем обработчик через onclick для надёжности + newBtn.onclick = function(e) { + e.preventDefault(); + e.stopPropagation(); + console.log('Кнопка "Создать комнату" нажата (onclick)'); + const name = ($('host-name')?.value || '').trim() || 'Игрок 1'; + const currentHost = window.location.hostname; + let url = window.location.origin; + if (currentHost !== 'localhost' && currentHost !== '127.0.0.1') { + url = window.location.origin; + } + + if (!socket || !socket.connected) { + connect(url); + socket.once('connect', () => { + socket.emit('createRoom', name); + }); + socket.once('connect_error', (e) => { + showError('Не удалось подключиться к серверу. Проверьте, что сервер запущен.'); + }); + } else { + socket.emit('createRoom', name); + } + }; + } else { + console.error('Кнопка btn-host не найдена! Проверьте, что элемент существует в DOM.'); + } $('btn-join')?.addEventListener('click', () => { clearError();