-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
106 lines (75 loc) · 2.56 KB
/
server.js
File metadata and controls
106 lines (75 loc) · 2.56 KB
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
100
101
102
103
104
105
106
var requirejs = require('requirejs');
requirejs.config({
//Pass the top-level main.js/index.js require
//function to requirejs so that node modules
//are loaded relative to the top-level JS file.
nodeRequire: require
});
requirejs(['express', 'http', 'socket.io', 'app/models/game'], function (express, http, socketio, Game) {
'use strict';
var app = express();
var port = 8080;
var server = http.createServer(app);
var pointsLimit = 5;
var nbPickups = 5;
/******************
Server
******************/
app.use(express.static('public'));
app.get('/', function (req, res) {
res.sendfile('index.html');
});
//Run server
server.listen(port);
console.log('Server runs on port : ' + port);
/******************
Communication
******************/
var io = socketio.listen(server);
var game = new Game(pointsLimit, nbPickups);
io.on('connection', function (socket) {
var addedPlayer = false;
var playerId = socket.id;
console.log(playerId + ' - ' + 'Un utilisateur s\'est connecté');
io.sockets.emit('updateGame', game);
socket.on('joinGame', function (nickname) {
console.log(playerId + ' - ' + 'L\'utilisateur s\'est joint à la partie avec le pseudo :' + nickname);
addedPlayer = true;
game.addPlayer(playerId, nickname);
socket.emit('inGame');
socket.on('goTo', function (direction) {
game.setPlayerPosition(playerId, direction);
if (game.getPlayerById(playerId).getPoints() == game.pointsLimit) {
io.sockets.emit('endGame', game);
setTimeout(function () {
game.cleanGame();
game.startGame();
io.sockets.emit('startGame', game);
}, 5000);
}
io.sockets.emit('updateGame', game);
});
if (Object.keys(game.playersHash).length < 2) {
socket.emit('waitingGame', game);
} else if (Object.keys(game.playersHash).length >= 2) {
game.startGame();
io.sockets.emit('startGame', game);
}
});
socket.on('disconnect', function () {
if (addedPlayer) {
console.log(playerId + ' - ' + 'Le joueur ' + game.getPlayerById(playerId).getNickname() + ' s\'est déconnecté.');
game.removePlayer(playerId);
if (Object.keys(game.playersHash).length < 2) {
game.cleanGame();
io.sockets.emit('endGame', game);
}
else {
io.sockets.emit('updateGame', game);
}
} else {
console.log(playerId + ' - ' + 'Un utilisateur s\'est déconnecté');
}
});
});
});