-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
104 lines (75 loc) · 1.99 KB
/
server.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
100
101
102
103
104
const {io} = require('./server_setup.js');
let boats = [];
let finished = false;
function Boat(id, distance, rotation, zrotation, name) {
this.id = id;
this.distance = distance;
this.rotation = rotation;
this.zrotation = zrotation;
this.name = name;
}
let time = 0;
setInterval(heartbeat, 10);
setInterval(timer, 100);
function heartbeat() {
io.sockets.emit('heartbeat', boats);
//console.log(boats)
}
function timer(){
if(!finished){
time += 0.1;
}
io.sockets.emit('timer', time);
// console.log(time)
}
function restart(){
console.log("restart");
io.sockets.emit('restart');
for (let i = 0; i<boats.length; i++) {
let boat = boats[i];
boat.distance = 0;
boat.rotation = 0;
boat.zrotation = 0;
boat.finished = false;
finished = false;
time = 0;
}
}
function won(boat, time){
io.sockets.emit('won', boat, time);
}
io.sockets.on(
'connection',
function(socket) {
console.log('We have a new client: ' + socket.id);
socket.on('start', function(data) {
let boat = new Boat(socket.id, data.distance);
boats.push(boat);
});
socket.on('update', function(data) {
for (let i = 0; i<boats.length; i++) {
let boat = boats[i];
if (socket.id == boat.id) {
boat.distance = data.distance;
boat.rotation = data.rotation;
boat.zrotation = data.zrotation;
boat.finished = data.finished;
boat.name = data.name;
}
if(boat.finished && !finished){
console.log("Boat finished! "+ boat.name + " " + boat.id);
finished = true;
won(boat, time);
setTimeout(restart, 3000);
}
}
});
socket.on('disconnect', function() {
console.log('Client has disconnected ' + socket.id);
for(let i = 0; i < boats.length; i++){
if(socket.id === boats[i].id){
boats.splice(i, 1);
}
}
});
});