button(@click="() => abortGame()") Abort
button(@click="resign") Resign
textarea(v-if="game.score=='*'" v-model="corrMsg")
- Chat(
+ Chat(:players="game.players")
</template>
<!--
// ==> après, implémenter/vérifier les passages de challenges + parties en cours
// observer,
-// when send to chat (or a move), reach only this group (send gid along)
-->
<script>
name: 'my-game',
components: {
BaseGame,
+ Chat,
},
// gameRef: to find the game in (potentially remote) storage
data: function() {
case "identity":
{
let player = this.people.find(p => p.sid == data.user.sid);
+ // NOTE: sometimes player.id fails because player is undefined...
+ // Probably because the event was meant for Hall?
+ if (!player)
+ return;
player.id = data.user.id;
player.name = data.user.name;
// Sending last state only for live games: corr games are complete
}
break;
}
+ case "askgame":
+ // Send current (live) game
+ const myGame =
+ {
+ // Minimal game informations:
+ id: this.game.id,
+ players: this.game.players.map(p => p.name),
+ vid: this.game.vid,
+ timeControl: this.game.timeControl,
+ };
+ this.st.conn.send(JSON.stringify({code:"game",
+ game:myGame, target:data.from}));
+ break;
case "newmove":
// NOTE: this call to play() will trigger processMove()
this.$refs["basegame"].play(data.move,
// ==> on "newmove", check "drawOffer" field
case "connect":
{
- this.people.push({name:"", id:0, sid:data.sid});
- this.st.conn.send(JSON.stringify({code:"askidentity", target:data.sid}));
+ this.people.push({name:"", id:0, sid:data.from});
+ this.st.conn.send(JSON.stringify({code:"askidentity", target:data.from}));
break;
}
case "disconnect":
- ArrayFun.remove(this.people, p => p.sid == data.sid);
+ ArrayFun.remove(this.people, p => p.sid == data.from);
break;
}
},