X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=empathy.js;h=b12c3e75553f596b7cc2108cc9e1c21f0bd97444;hb=9aa7407eda90493c1004258e705ef0fa4afa6a48;hp=11539d854a4473c38be1b7a8373f903986bef7f5;hpb=9fb6009a9666b92b18436975409d3717128ec9ba;p=empires-server diff --git a/empathy.js b/empathy.js index 11539d8..b12c3e7 100644 --- a/empathy.js +++ b/empathy.js @@ -15,6 +15,30 @@ class Empathy extends Game { } reset() { + + /* Before closing out the current round, we accumulate that score + * for each player into their runnning total. */ + for (let score of this.state.scores.scores) { + const player = this.players.find(p => p.name === score.player); + if (player.score) + player.score += score.score; + else + player.score = score.score; + + /* And broadcast that new score out. */ + this.broadcast_event('player-update', player.info_json()); + } + + /* Now that we're done with the active prompt, we remove it from + * the list of prompts and also remove any prompts that received + * no votes. This keeps the list of prompts clean. + */ + const active_id = this.state.active_prompt.id; + this.state.prompts = + this.state.prompts.filter( + p => p.id !== active_id && p.votes.length > 0 + ); + this.state.active_prompt = null; this.state.players_answered = 0; this.state.scores = null; @@ -129,11 +153,14 @@ class Empathy extends Game { return b.players.length - a.players.length; }); + /* Put this round's scores into the game state object so it will + * be sent to any new clients that join. */ this.state.scores = { scores: scores, words: word_submitters_arr }; + /* And broadcast the scores to all connected clients. */ this.broadcast_event_object('scores', this.state.scores); } }