-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRoom.js
71 lines (58 loc) · 1.96 KB
/
Room.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
const PlayerList = require('./PlayerList');
const AvailableGamemodes = require('./AvailableGamemodes');
class Room {
constructor(gameServer, roomDetails) {
this.gameServer = gameServer;
this.name = roomDetails.name;
this.protection = roomDetails.protection;
this.password = roomDetails.passwd;
this.players = new PlayerList();
this.gameMode = roomDetails.gameMode;
this.gameRuleEngine = new AvailableGamemodes[roomDetails.gameMode].implementation(this);
}
playerCount() {
return this.players.getTotalNumber();
}
maxPlayers() {
return this.gameRuleEngine.maxPlayers();
}
join(client, playerName, password) {
var authCorrect = false;
var status;
if (this.protection == "none" || this.protection == "passwd" && this.password == password) {
status = this.players.addPlayer(playerName, client);
if (status.status) {
var newPlayer = this.players.getPlayerByName(playerName);
this.gameRuleEngine.onPlayerJoin(newPlayer)
} else {
return status;
}
} else {
status = {
status: false,
message: 'Wrong password',
}
}
return status;
}
leave(playerName) {
var existingPlayer = this.players.getPlayerByName(playerName);
var status = this.players.removePlayerByName(playerName);
status.remainingPlayerNo = this.players.getTotalNumber();
this.gameRuleEngine.onPlayerLeave(existingPlayer);
return status;
}
getTotalNumberSeated() {
return this.players.getTotalNumberSeated();
}
getPlayerBySeat(seatNo) {
return this.players.getPlayerBySeat(seatNo);
}
getAllPlayers() {
return this.players.getAllPlayers();
}
getAllSeatedPlayers() {
return this.players.getAllSeatedPlayers();
}
}
module.exports = Room;