bc/bc.js
2025-05-09 12:11:07 +00:00

69 lines
2.7 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.

// 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}`));