MultiplayerMinesweeper/dist/server/netcode.js

56 lines
2.1 KiB
JavaScript

import { IllegalAction } from "./illegalAction.js";
import { roomManager } from "../roomManager.js";
import { io } from "./io.js";
io.on('connection', function (client) {
connected(client);
});
function connected(client) {
client.sync = function () {
const tempWorld = client.game.world.obfuscate();
io.to(client.game.id).emit('sync', { world: tempWorld });
};
client.sendMeta = function () {
const roomID = client.game.id;
const roomPlayers = client.game.players; // Dont send client id's to everyone, TODO
const metadata = { players: roomPlayers, roomID: roomID };
io.to(client.game.id).emit('metadata', metadata);
const id = client.game.id;
client.emit('message', id);
};
client.game = "";
client.player = "";
client.on('disconnect', function () {
if (!roomManager.getAllPlayerIDs().includes(client.id))
return new IllegalAction(client.id, 22);
client.game.removePlayerByID(client.id);
client.sendMeta();
});
client.on('joinGame', function (data) {
const info = roomManager.playerJoinGame(data.room, data.name, data.color, client.id);
client.join(info[0].id);
client.game = info[0];
client.player = info[1];
client.sync();
client.emit('inGame', true);
client.sendMeta();
});
client.on('createGame', function (data) {
const info = roomManager.playerCreateGame(data.options, data.name, data.color, client.id);
client.join(info[0].id);
client.game = info[0];
client.player = info[1];
client.emit('inGame', true);
client.sync();
client.sendMeta();
});
client.on('leaveGame', function (data) {
client.game.removePlayerByID(client.id);
});
client.on('clickCanvas', function (data) {
if (!roomManager.getAllPlayerIDs().includes(client.id))
return new IllegalAction(client.id, 1);
client.game.world.click(data.tilePosition[0], data.tilePosition[1], data.mode, client.player);
client.sync();
});
}
//# sourceMappingURL=netcode.js.map