99 lines
2.8 KiB
JavaScript
99 lines
2.8 KiB
JavaScript
const port = 3000;
|
|
|
|
const http = require('http');
|
|
const express = require('express');
|
|
const socketio = require('socket.io');
|
|
const { exec } = require('child_process');
|
|
|
|
const app = express();
|
|
const clientPath = __dirname+'/../client';
|
|
console.log('Serving static from ' + clientPath);
|
|
app.use(express.static(clientPath));
|
|
|
|
const server = http.createServer(app);
|
|
const io = socketio(server);
|
|
|
|
app.post('/receiveUpdate', (req, res) => {
|
|
res.status(200).json({success:true});
|
|
exec(`sh ${__dirname}/../gitUpdate.sh`, (error, stdout, stderr) => {
|
|
console.log(stdout);
|
|
console.error(stderr);
|
|
if (error !== null) {
|
|
console.error(`exec error: ${error}`);
|
|
}
|
|
});
|
|
});
|
|
|
|
server.on('error', err => {
|
|
console.error('Server error:', err);
|
|
});
|
|
|
|
server.listen(port, () => {
|
|
console.log('Server Started on Port '+port);
|
|
});
|
|
|
|
const cells = 40;
|
|
let snakePlayers = Array(), snakeFood = {x: Math.floor(Math.random()*cells), y: Math.floor(Math.random()*cells)};
|
|
|
|
io.on('connection', socket => {
|
|
let id = -1;
|
|
|
|
console.log("New Player has connected.");
|
|
while (true) {
|
|
let current = Math.floor(Math.random()*89+10);
|
|
let isUsed = false;
|
|
for (let i = 0; i < snakePlayers.length; i++) {
|
|
if (snakePlayers[i].uid == current) {
|
|
isUsed = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!isUsed) {
|
|
id = current;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (id != -1) {
|
|
console.log('Handing ID', id);
|
|
let temp = Array();
|
|
snakePlayers.forEach(p => {
|
|
if (p.data != null) {
|
|
temp.push(p.data);
|
|
}
|
|
});
|
|
socket.emit('connected', {pdata: temp, ownID: id, food: snakeFood});
|
|
snakePlayers.push({socket, ownID: id, data: null});
|
|
}
|
|
|
|
socket.on('disconnect', () => {
|
|
for (let i = 0; i < snakePlayers.length; i++) {
|
|
if (snakePlayers[i].socket == socket) {
|
|
console.log("Disconnecting SNAKEGAME User. ID", snakePlayers[i].ownID);
|
|
snakePlayers.splice(i, 1);
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
|
|
socket.on('snakeFoodUpdate', () => {
|
|
snakeFood = {x: Math.floor(Math.random()*cells), y: Math.floor(Math.random()*cells)};
|
|
});
|
|
|
|
socket.on('snakePlayerUpdate', p => {
|
|
for (let i = 0; i < snakePlayers.length; i++) {
|
|
if (p.ownID == snakePlayers[i].ownID) {
|
|
snakePlayers[i].data = p.data;
|
|
let temp = Array();
|
|
snakePlayers.forEach(d => {
|
|
if (d.ownID != p.ownID && d.data != null) {
|
|
temp.push(d.data);
|
|
}
|
|
});
|
|
snakePlayers[i].socket.emit('snakeUpdatePlayers', {pdata: temp, food: snakeFood});
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
});
|