X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;ds=sidebyside;f=empathy%2Fempathy.jsx;h=4151cf729edf1de6a53151ad49b947aeb2e504d9;hb=e4c308c3331de77071170b0711505a990eaba617;hp=0771bbe3d46e04071927e93de3b01ad3f38910b7;hpb=efb56934eb9333fb19e515432c5f03f47e5aa3cf;p=lmno.games diff --git a/empathy/empathy.jsx b/empathy/empathy.jsx index 0771bbe..4151cf7 100644 --- a/empathy/empathy.jsx +++ b/empathy/empathy.jsx @@ -1,3 +1,5 @@ +const MAX_PROMPT_ITEMS = 20; + function undisplay(element) { element.style.display="none"; } @@ -43,6 +45,12 @@ events.addEventListener("player-enter", event => { window.game.set_other_player_info(info); }); +events.addEventListener("player-exit", event => { + const info = JSON.parse(event.data); + + window.game.remove_player(info); +}); + events.addEventListener("player-update", event => { const info = JSON.parse(event.data); @@ -55,11 +63,35 @@ events.addEventListener("player-update", event => { events.addEventListener("game-state", event => { const state = JSON.parse(event.data); - for (let prompt of state.prompts) { - window.game.add_or_update_prompt(prompt); - } + window.game.reset_game_state(); + + window.game.set_prompts(state.prompts); window.game.set_active_prompt(state.active_prompt); + + window.game.set_players_answered(state.players_answered); + + window.game.set_players_answering(state.players_answering); + + window.game.set_answering_idle(state.answering_idle); + + window.game.set_end_answers(state.end_answers); + + window.game.set_ambiguities(state.ambiguities); + + window.game.set_players_judged(state.players_judged); + + window.game.set_players_judging(state.players_judging); + + window.game.set_judging_idle(state.judging_idle); + + window.game.set_end_judging(state.end_judging); + + window.game.set_scores(state.scores); + + window.game.set_new_game_votes(state.new_game_votes); + + window.game.state_ready(); }); events.addEventListener("prompt", event => { @@ -74,6 +106,90 @@ events.addEventListener("start", event => { window.game.set_active_prompt(prompt); }); +events.addEventListener("player-answered", event => { + const player = JSON.parse(event.data); + + window.game.set_player_answered(player); +}); + +events.addEventListener("player-answering", event => { + const player = JSON.parse(event.data); + + window.game.set_player_answering(player); +}); + +events.addEventListener("answering-idle", event => { + const value = JSON.parse(event.data); + + window.game.set_answering_idle(value); +}); + +events.addEventListener("vote-end-answers", event => { + const player = JSON.parse(event.data); + + window.game.set_player_vote_end_answers(player); +}); + +events.addEventListener("unvote-end-answers", event => { + const player = JSON.parse(event.data); + + window.game.set_player_unvote_end_answers(player); +}); + +events.addEventListener("ambiguities", event => { + const ambiguities = JSON.parse(event.data); + + window.game.set_ambiguities(ambiguities); +}); + +events.addEventListener("player-judged", event => { + const player = JSON.parse(event.data); + + window.game.set_player_judged(player); +}); + +events.addEventListener("player-judging", event => { + const player = JSON.parse(event.data); + + window.game.set_player_judging(player); +}); + +events.addEventListener("judging-idle", event => { + const value = JSON.parse(event.data); + + window.game.set_judging_idle(value); +}); + +events.addEventListener("vote-end-judging", event => { + const player = JSON.parse(event.data); + + window.game.set_player_vote_end_judging(player); +}); + +events.addEventListener("unvote-end-judging", event => { + const player = JSON.parse(event.data); + + window.game.set_player_unvote_end_judging(player); +}); + +events.addEventListener("scores", event => { + const scores = JSON.parse(event.data); + + 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 * *********************************************************/ @@ -111,16 +227,23 @@ const PlayerInfo = React.memo(props => { if (! props.player.id) return null; + const all_players = [props.player, ...props.other_players]; + + const sorted_players = all_players.sort((a,b) => { + return b.score - a.score; + }); + + const names_and_scores = sorted_players.map(player => { + if (player.score) + return `${player.name} (${player.score})`; + else + return player.name; + }).join(', '); + return (
- Remember, you're trying to match your answers with - what the other players submit. - Give {props.prompt.items} responses for the following prompt: -
-