window.game.set_scores(state.scores);
+ window.game.set_new_game_votes(state.new_game_votes);
+
window.game.state_ready();
});
window.game.set_scores(scores);
});
+events.addEventListener("vote-new-game", event => {
+ const player = JSON.parse(event.data);
+
+ window.game.set_player_vote_new_game(player);
+});
+
+events.addEventListener("unvote-new-game", event => {
+ const player = JSON.parse(event.data);
+
+ window.game.set_player_unvote_new_game(player);
+});
+
/*********************************************************
* Game and supporting classes *
*********************************************************/
<div className="please-wait">
<h2>Submission received</h2>
<p>
- The following players have completed judging:
+ The following players have completed judging:{' '}
{[...this.props.players_judged].join(', ')}
</p>
<p>
<div className="please-wait">
<h2>Submission received</h2>
<p>
- The following players have submitted their answers:
+ The following players have submitted their answers:{' '}
{[...this.props.players_answered].join(', ')}
</p>
<p>
judging_idle: false,
end_judging_votes: new Set(),
scores: null,
+ new_game_votes: new Set(),
ready: false
};
}
judging_idle: false,
end_judging_votes: new Set(),
scores: null,
+ new_game_votes: new Set(),
ready: false
});
}
});
}
+ set_new_game_votes(players) {
+ this.setState({
+ new_game_votes: new Set(players)
+ });
+ }
+
+ set_player_vote_new_game(player) {
+ this.setState({
+ new_game_votes: new Set([...this.state.new_game_votes, player])
+ });
+ }
+
+ set_player_unvote_new_game(player) {
+ this.setState({
+ new_game_votes: new Set([...this.state.new_game_votes].filter(p => p !== player))
+ });
+ }
+
state_ready() {
this.setState({
ready: true
{state.scores.scores.map(score => {
return (
<li key={score.player}>
- {score.player}: {score.score}
+ {score.players.join("/")}: {score.score}
</li>
);
})}
{state.scores.words.map(word => {
return (
<li key={word.word}>
- {`${word.word}: ${word.players.join(', ')}`}
+ {word.word} ({word.players.length}): {word.players.join(', ')}
</li>
);
})}
</ul>
<button
- className="new-game"
- onClick={() => fetch_post_json('reset') }
+ className="vote-button"
+ onClick={() => fetch_post_json(`new-game/${state.active_prompt.id}`) }
>
New Game
+ <div className="vote-choices">
+ {[...state.new_game_votes].map(v => {
+ return (
+ <div
+ key={v}
+ className="vote-choice"
+ >
+ {v}
+ </div>
+ );
+ })}
+ </div>
</button>
</div>
);