X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=empathy.js;h=f9bf7410d4da8e77f3208b6608005dc770dabbbd;hb=02c84b85c58b60f48bb0baf37cacdd037e84d28d;hp=3ec4a7b74d3dda75f237e1a0a944b7edcc5010dd;hpb=162a37c567f8f2839a4968a784d4583b2e9d5e49;p=empires-server diff --git a/empathy.js b/empathy.js index 3ec4a7b..f9bf741 100644 --- a/empathy.js +++ b/empathy.js @@ -7,15 +7,28 @@ class Empathy extends Game { this.state = { prompts: [], active_prompt: null, - players_answered: 0 + players_answered: 0, + scores: null }; this.answers = []; this.next_prompt_id = 1; } reset() { + /* 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; + this.answers = []; this.broadcast_event_object('game-state', this.state); @@ -112,6 +125,16 @@ class Empathy extends Game { player: a.player.name, score: score }); + /* Now that we've computed the score for a player for this + * round, also accumulate that score into the players runnning + * total. */ + if (a.player.score) + a.player.score += score; + else + a.player.score = score; + + /* And broadcast that new score out. */ + this.broadcast_event('player-update', a.player.info_json()); } scores.sort((a,b) => { @@ -126,11 +149,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); } }