🔥 rm app.js

docker-deployment
Vincent ASTOLFI 10 months ago
parent 71f513bdca
commit 0c6efe729c

235
app.js

@ -1,235 +0,0 @@
const { Player } = require(`${__dirname}/businesses/Player.js`);
let rooms = [];
let players = [];
module.exports = function(io) {
io.on("connection", (socket) => {
console.log("New connected : ", socket.id);
socket.on("disconnect", () => {
const index = players.findIndex((p) => p.id === socket.id)
const roomIndex = rooms.findIndex(room =>
room.players.some(player => player.id === socket.id)
);
if (roomIndex !== -1) {
const room = rooms[roomIndex];
const opponent = room.players.find(player => player.id !== socket.id);
const inRoomIndex = room.players.findIndex(player => player.id === socket.id);
if (opponent) {
io.to(opponent.id).emit('opponent left');
}
room.players.splice(inRoomIndex, 1)
if (room.players.length === 0) {
rooms.splice(roomIndex, 1);
}
}
players.splice(index, 1)
console.log(`Player disconnected: ${socket.id}`);
})
socket.on("first connection", (socketId) => {
let player = new Player(socketId);
players.push(player);
});
socket.on("Hello", (callback) => {
callback({
Hello: "World",
});
});
socket.on("room creation", (id, callback) => {
let room = new Room();
room.addPlayer(players.find((p) => p.id === id));
rooms.push(room);
callback({
roomId: room.id,
});
});
socket.on("ask for room", (roomId, id) => {
let room = rooms.find((r) => r.id === roomId);
room.addPlayer(players.find((p) => p.id === id));
room.validBoards();
room.players.forEach((player) => {
io.to(player.id).emit("start game");
});
room.start();
});
socket.on("play", (roomId, id, move) => {
let room = rooms.find((r) => r.id === roomId);
room.move(move);
});
socket.on("get player", (roomId, id, callback) => {
let out = ""
const room = rooms.find((r) => r.id === roomId)
if (room === undefined) {
out = players.find((p) => p.id === id);
} else {
out = room.players.find((p) => p.id === id)
}
callback({
player: out,
});
});
socket.on("get ennemy", (roomId, id, callack) => {
const room = rooms.find((r) => r.id === roomId);
const out = room.players.find((p) => p.id !== id);
callack({
player: out,
});
});
socket.on("update grid", (id, grid, callback) => {
const player = players.find((p) => p.id === id);
player.grid = grid;
callback({
status: true,
});
});
socket.on("reset grid", (roomId) => {
const player = rooms.find((r) => r.id === roomId).players[0]
player.resetGrid();
})
socket.on("update piece", (playerId, piece) => {
const player = players.find((p) => p.id === playerId);
const index = player.pieces.findIndex((p) => p.id === piece.id);
player.pieces[index] = piece;
});
socket.on("change selection status", (playerId, pieceId, status) => {
players
.find((p) => p.id === playerId)
.pieces.find((piece) => piece.id === pieceId).isSelected = status;
});
});
}
const askToPlay = (game) => {
io.to(game.actualPlayer).emit("play");
};
const playedMoove = (game, isHit, isWin) => {
game.players.forEach((player) => {
io.to(player.id).emit("played move", isHit, isWin);
});
};
class Room {
constructor(room) {
this.id = this.generateRoomId(); // change the id with something prettier
this.players = [];
this.room = room;
this.actualPlayer = "";
this.ennemy = "";
}
addPlayer(player) {
this.players.push(player);
}
start() {
let rand = Math.floor(Math.random() * (1 - 0 + 1) + 0);
this.actualPlayer = this.players[rand].id;
rand === 0
? (this.ennemy = this.players[1].id)
: (this.ennemy = this.players[0].id);
players.forEach((p) => {
for (let i = 0; i < p.pieces.length; i++) {
p.pieces[i].isMovable = false;
p.pieces[i].isSelected = false;
}
});
askToPlay(this);
}
/*
endGame() {
this.room.players.forEach((player) =>
io.to(player.socketId).emit("end game"),
);
}
*/
move(move) {
let playedCase = this.players.find((p) => p.id === this.ennemy).grid.cases[move.col][move.row];
if (playedCase.isPlayed === false) {
this.players.find((p) => p.id === this.ennemy).grid.cases[move.col][move.row].isPlayed = true;
playedMoove(this, playedCase.isShip, this.checkWin());
let tmp = this.actualPlayer;
this.actualPlayer = this.ennemy;
this.ennemy = tmp;
}
askToPlay(this);
}
checkWin() {
const e = this.players.find((p) => p.id === this.ennemy);
let w = true;
for (let i = 0; i < e.grid.cases.length; i++) {
for (let j = 0; j < e.grid.cases.length; j++) {
let c = e.grid.cases[i][j];
if (c.isShip && !c.isPlayed) {
w = false;
break;
}
}
}
return w;
}
validBoards() {
this.players.forEach((player) => {
player.pieces.forEach((piece) => {
for (let i = piece.startPos.x; i <= piece.endPos.x; i++) {
for (let j = piece.startPos.y; j <= piece.endPos.y; j++) {
player.grid.cases[i][j].isShip = true;
}
}
});
});
}
generateRoomId() {
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
const idLength = 5;
let roomId = '';
for (let i = 0; i < idLength; i++) {
const randomIndex = Math.floor(Math.random() * characters.length);
roomId += characters[randomIndex];
}
return roomId;
}
}
Loading…
Cancel
Save