case "abort":
this.$refs["basegame"].endGame("?", "Abort: " + data.msg);
break;
+ case "draw":
+ this.$refs["basegame"].endGame("1/2", "Mutual agreement");
+ break;
+ case "drawoffer":
+ this.drawOffer = "received";
+ break;
+ case "askfullgame":
+ // TODO: just give game; observers are listed here anyway:
+ // gameconnect?
+ break;
// TODO: drawaccepted (click draw button before sending move ==> draw offer in move)
// ==> on "newmove", check "drawOffer" field
// TODO: also use (dis)connect info to count online players?
break;
}
};
+ // TODO: onopen, ask lastState informations + update observers and players status
const socketCloseListener = () => {
this.st.conn.addEventListener('message', socketMessageListener);
this.st.conn.addEventListener('close', socketCloseListener);
},
methods: {
offerDraw: function() {
+ // TODO: also for corr games
if (this.drawOffer == "received")
{
- if (!confirm("Offer draw?"))
+ if (!confirm("Accept draw?"))
return;
this.st.conn.send(JSON.stringify({code:"draw", target:this.game.oppid}));
+ this.$refs["basegame"].endGame("1/2", "Mutual agreement");
+ }
else if (this.drawOffer == "sent")
this.drawOffer = "";
else
{
if (!confirm("Offer draw?"))
return;
- // Stay in "draw offer sent" state until next move is played
- this.drawOfferSent = true;
- if (this.subMode == "corr")
- {
- // TODO: set drawOffer on in game (how ?)
- }
- else //live game
- {
- this.opponents.forEach(o => {
- if (!!o.online)
- {
- try {
- } catch (INVALID_STATE_ERR) {
- return;
- }
- }
- });
+ this.st.conn.send(JSON.stringify({code:"drawoffer", target:this.game.oppid}));
}
},
// + conn handling: "draw" message ==> agree for draw (if we have "drawOffered" at true)
if (!!this.game.oppid)
{
// Send ping to server (answer pong if players[s] are connected)
- this.st.conn.send(JSON.stringify({code:"ping",
- target:this.game.oppid, gameId:this.gameRef.id}));
+ this.st.conn.send(JSON.stringify({code:"ping", target:this.game.oppid}));
}
};
if (!!game)
return afterRetrival(game);
if (!!this.gameRef.rid)
{
+ this.st.conn.send(JSON.stringify({code:"askfullgame", target:this.gameRef.rid}));
// TODO: just send a game request message to the remote player,
// and when receiving answer just call loadGame(received_game)
// + remote peer should have registered us as an observer
},
};
</script>
+
+<style lang="sass">
+// TODO
+</style>