-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
99 lines (87 loc) · 3.09 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
var http = require('http');
var fs = require('fs');
var path = require('path');
var id = 1;
// Chargement du fichier index.html affiché au client
var server = http.createServer(function (req, res) {
var fileStream;
var resourcePath;
if (req.url === "/") {
fs.readFile('./index.html', 'utf-8', function (error, content) {
res.writeHead(200, {"Content-Type": "text/html"});
res.end(content);
});
} else if (req.url.match("\.css$")) {
resourcePath = path.join(__dirname, req.url);
fileStream = fs.createReadStream(resourcePath, "UTF-8");
res.writeHead(200, {"Content-Type": "text/css"});
fileStream.pipe(res);
} else if (req.url.match("\.png$")) {
resourcePath = path.join(__dirname, req.url);
fileStream = fs.createReadStream(resourcePath);
res.writeHead(200, {"Content-Type": "image/png"});
fileStream.pipe(res);
} else if (req.url.match("\.js$")) {
resourcePath = path.join(__dirname, req.url);
fileStream = fs.createReadStream(resourcePath, "UTF-8");
res.writeHead(200, {"Content-Type": "application/javascript"});
fileStream.pipe(res);
} else {
res.writeHead(404, {"Content-Type": "text/html"});
res.end("No Page Found");
}
});
// Chargement de socket.io
var io = require('socket.io').listen(server);
var players = {};
var inputs = [];
var SPEED = 150;
var WORLD = {
width: 500,
height: 500
};
var SQUARESIZE = 50;
// Quand un client se connecte, on le note dans la console
io.sockets.on('connection', function (socket) {
console.log('Un client est connecté !');
socket.on('disconnect', function () {
delete players[socket.id];
io.sockets.emit("del_player", {id:socket.id});
console.log('Un client s\'est déconnecté !');
});
socket.on('player_update', function (input) {
input.id = socket.id;
inputs.push(input);
});
socket.on("add_player", function(data){
players[socket.id] = {
name: data.name,
x: Math.round(Math.random() * (WORLD.width - SQUARESIZE)),
y: Math.round(Math.random() * (WORLD.height - SQUARESIZE))
};
io.sockets.emit("new_player", {id: socket.id, player: players[socket.id]});
});
});
function simulateWorld() {
if (players) {
for (var playerId in players) {
if (players.hasOwnProperty(playerId)) {
players[playerId].oldX = players[playerId].x;
players[playerId].oldY = players[playerId].y;
}
}
for (var idx = 0; idx < inputs.length; idx++) {
var input = inputs[idx];
var player = players[input.id];
player.x += input.vx * SPEED * input.elapsedTime;
player.y += input.vy * SPEED * input.elapsedTime;
}
io.sockets.emit("game_update", {timestamp: Date.now(), players: players, inputs: inputs});
inputs = [];
}
}
setInterval(function () {
simulateWorld();
}, 150);
server.listen(8080, "0.0.0.0");
console.log("Server created on localhost:8080")