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;
// 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?
},
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)
console.log("click challenge");
console.log(c);
- else if (c.from.sid == this.st.user.sid
+ if (c.from.sid == this.st.user.sid
|| (this.st.user.id > 0 && c.from.id == this.st.user.id))
{
// It's my challenge: cancel it
case "abort":
clients[obj.target].send(JSON.stringify({code:"abort",msg:obj.msg}));
break;
+ case "drawoffer":
+ clients[obj.target].send(JSON.stringify({code:"drawoffer"}));
+ break;
+ case "draw":
+ clients[obj.target].send(JSON.stringify({code:"draw"}));
+ break;
}
});
socket.on("close", () => {