);
}
// 0.1] Ask server for room composition:
- const socketOpenListener = () => {
+ const funcPollClients = () => {
this.st.conn.send(JSON.stringify({code:"pollclients"}));
};
- this.st.conn.onopen = socketOpenListener;
+ if (!!this.st.conn && this.st.conn.readyState == 1) //1 == OPEN state
+ funcPollClients();
+ else //socket not ready yet (initial loading)
+ {
+ const socketOpenListener = funcPollClients;
+ this.st.conn.onopen = socketOpenListener;
+ }
// TODO: is this required here?
this.oldOnmessage = this.st.conn.onmessage || Function.prototype;
this.st.conn.onmessage = this.socketMessageListener;
showGame: function(g) {
// NOTE: we are an observer, since only games I don't play are shown here
// ==> Moves sent by connected remote player(s) if live game
-
-// TODO: this doesn't work: choose a SID at random
- // --> do we have players' names ?
-
- let url = "/" + g.id;
+ let url = "/game/" + g.id;
if (g.type == "live")
{
- const sids = g.players.map(p => p.sid).join(",");
- url += "?sids=" + sids;
+ const remotes = g.players.filter(p => this.people.some(pl => pl.sid == p.sid));
+ const rIdx = (remotes.length == 1 ? 0 : Math.floor(Math.random()*2));
+ url += "?rid=" + remotes[rIdx].sid;
}
this.$router.push(url);
},
vid: c.vid,
timeControl: c.timeControl
};
+
+ // TODO: understand multiple (increasing) "send challenge" events.... (when potential opponent navigate Hall --> variants --> Hall)
+console.log("send challenge to " + data.from);
+
this.st.conn.send(JSON.stringify({code:"challenge",
chall:myChallenge, target:data.from}));
}
}
case "challenge":
{
+
+console.log(data.chall);
+
// Receive challenge from some player (+sid)
let newChall = data.chall;
newChall.type = this.classifyObject(data.chall);
{
// Receive game from some player (+sid)
// NOTE: it may be correspondance (if newgame while we are connected)
- let newGame = data.game;
- newGame.type = this.classifyObject(data.game);
- newGame.rid = data.from;
- newGame.score = "*";
- this.games.push(newGame);
+ if (!this.games.some(g => g.id == data.game.id)) //ignore duplicates
+ {
+ let newGame = data.game;
+ newGame.type = this.classifyObject(data.game);
+ newGame.rid = data.from;
+ newGame.score = "*";
+ this.games.push(newGame);
+ }
break;
}
case "newgame":
<style lang="sass">
// TODO
</style>
-
-<!--
-// TODO:
-// Remove duplicates if several players of one game send their game info (Hall)
-// When click on it, assign a random rid among online players (max. 4).
--->