-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathserver.js
More file actions
89 lines (76 loc) · 2.29 KB
/
server.js
File metadata and controls
89 lines (76 loc) · 2.29 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
const express = require('express');
const app = require('express')();
const http = require('http').createServer(app);
const io = require('socket.io')(http);
app.use(express.static(__dirname + '/public'));
//Routing
app.get('/', function(req, res){
res.sendFile('/index.html');
});
// Game Variables
var debugMode = true;
var canvasW = 500;
var canvasH = 500;
var playerW = 50;
var playerH = 50;
var players = {};
// Functions
function consoleDebug(message)
{
if(debugMode)
console.log(`DEBUG: ${message}`);
}
function handleDisconnect()
{
// Se o cliente que desconectou está na lista de jogadores, desconectamos ele.
if(players[this.id]) {
console.log(`CONSOLE: Jogador ${players[this.id].name} desconectou do jogo.`);
delete players[this.id];
} else {
// O cliete não está na lista de jogadores, logo, ele não foi autenticado.
consoleDebug(`Cliente ${this.id} desconectou sem autenticar.`);
}
}
/**
* Jogador já tem um nick, agora vamos inserí-lo dentro do jogo propriamente ao jogo!
*
* @param {string} nickname
*/
function startGame(nickname)
{
players[this.id] = {
id: this.id,
name: nickname, // NOTA: Deveríamos fazer um doublecheck pra tirar carácteres inválidos.
posX: 250, // NOTA: Isso deve ser aleatório. Estático por enquanto.
posY: 250, // NOTA: Isso deve ser aleatório. Estático por enquanto.
score: 0,
};
console.log(`CONSOLE: Cliente ${this.id} autenticado, jogador ${players[this.id].name} está online!`);
console.log(players);
}
// Networking
io.on('connection', function(socket){
var data = {
canvasW: canvasW,
canvasH: canvasH,
playerW: playerW,
playerH: playerH,
player: {
id: socket.id,
name: null,
posX: 0,
posY: 0,
score: 0,
},
}
// Envia informações iniciais pro clietne.
socket.emit('init', data);
consoleDebug(`Cliente: ${socket.id} entrou na página, aguardando autenticação...`);
// Estamos esperando o cliente iniciar o jogo...
socket.on('startGame', startGame);
// Jogador desconectou
socket.on('disconnect', handleDisconnect);
});
http.listen(3000, function(){
console.log('listening on *:3000');
});