// server.js const express = require('express'); const http = require('http'); const socketIo = require('socket.io'); const path = require('path'); const GameManager = require('./server_modules/gameManager'); const hostname = '81.177.140.16'; const app = express(); const server = http.createServer(app); const io = socketIo(server); const PORT = process.env.PORT || 3200; app.use(express.static(path.join(__dirname, 'public'))); const gameManager = new GameManager(io); io.on('connection', (socket) => { console.log('New client connected:', socket.id); const availableGames = gameManager.getAvailablePvPGamesListForClient(); socket.emit('availablePvPGamesList', availableGames); socket.on('requestPvPGameList', () => { const currentAvailableGames = gameManager.getAvailablePvPGamesListForClient(); socket.emit('availablePvPGamesList', currentAvailableGames); }); socket.on('createGame', (data) => { // data = { mode: 'ai' | 'pvp' } gameManager.createGame(socket, data.mode); }); socket.on('joinGame', (data) => { // Ожидаем data = { gameId: 'СТРОКА' } if (data && typeof data.gameId === 'string') { gameManager.joinGame(socket, data.gameId); } else { console.warn(`[bc.js] Неверный формат данных для joinGame от ${socket.id}:`, data); socket.emit('gameError', { message: 'Ошибка присоединения: неверный формат ID игры.' }); } }); socket.on('findRandomGame', () => { gameManager.findAndJoinRandomPvPGame(socket); }); // ИЗМЕНЕНО: Убрана проверка на data.gameId для playerAction socket.on('playerAction', (data) => { // gameManager.handlePlayerAction определит игру по socket.id // и передаст data в GameInstance. gameManager.handlePlayerAction(socket.id, data); }); socket.on('requestRestart', (data) => { // Ожидаем data = { gameId: 'СТРОКА' } if (data && typeof data.gameId === 'string') { gameManager.requestRestart(socket.id, data.gameId); } else { console.warn(`[bc.js] Неверный формат данных для requestRestart от ${socket.id}:`, data); socket.emit('gameError', { message: 'Ошибка рестарта: неверный формат ID игры.' }); } }); socket.on('disconnect', () => { console.log('Client disconnected:', socket.id); gameManager.handleDisconnect(socket.id); }); }); server.listen(PORT, hostname, () => console.log(`Server listening on ${hostname}:${PORT}`));