-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcommon-logic.ts
45 lines (43 loc) · 1.23 KB
/
common-logic.ts
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
import * as t from "./types";
export const canHaveRole = (
team: t.PlayerTeam,
role: t.Role,
game: t.Game
): boolean => {
const alreadyThat = game.players.filter(
p =>
p.team.isSome() &&
p.team.value === team &&
p.role.isSome() &&
p.role.value === role
).size;
if (role === t.Role.Spymaster) {
return alreadyThat === 0;
} else {
return true;
}
};
export const readyToStart = (game: t.Game): boolean => {
let team1Spymaster = false;
let team2Spymaster = false;
let team1Guesser = false;
let team2Guesser = false;
for (const player of game.players.valueSeq().toArray()) {
if (player.role.isSome() && player.team.isSome()) {
if (player.role.value === t.Role.Spymaster) {
if (player.team.value === t.Team.Team1) {
team1Spymaster = true;
} else if (player.team.value === t.Team.Team2) {
team2Spymaster = true;
}
} else if (player.role.value === t.Role.Guesser) {
if (player.team.value === t.Team.Team1) {
team1Guesser = true;
} else if (player.team.value === t.Team.Team2) {
team2Guesser = true;
}
}
}
}
return team1Spymaster && team1Guesser && team2Guesser && team2Spymaster;
};