fen: "",
vid: 0,
nbPlayers: 0,
- to: ["", "", ""], //name of challenged players
+ to: ["", "", ""], //name(s) of challenged player(s)
timeControl: "", //"2m+2s" ...etc
},
};
created: function() {
// Always add myself to players' list
this.players.push(this.st.user);
-
- console.log("created");
-ajax("/testtest", "DELETE");
-
+ if (this.st.user.id > 0)
+ {
// Ask server for current corr games (all but mines)
// ajax(
-// "",
-// "GET",
-// response => {
-//
-// }
-// );
- // // Also ask for corr challenges (all) --> + accepted status if I play
-// ajax(
-// "",
+// "/games",
// "GET",
+// {excluded: this.st.user.id},
// response => {
-//
+// this.games = this.games.concat(response.games);
// }
// );
+ // Also ask for corr challenges (open + sent to me)
+ ajax(
+ "/challenges",
+ "GET",
+ {uid: this.st.user.id},
+ response => {
+ console.log(response.challenges);
+ // TODO: post-treatment on challenges ?
+ this.challenges = this.challenges.concat(response.challenges);
+ }
+ );
+ }
// 0.1] Ask server for room composition:
const socketOpenListener = () => {
this.st.conn.send(JSON.stringify({code:"pollclients"}));
{
this.players.push({name:"", id:0, sid:data.sid});
this.st.conn.send(JSON.stringify({code:"askidentity", target:data.sid}));
- this.st.conn.send(JSON.stringify({code:"askchallenge", target:sid}));
- this.st.conn.send(JSON.stringify({code:"askgame", target:sid}));
+ this.st.conn.send(JSON.stringify({code:"askchallenge", target:data.sid}));
+ this.st.conn.send(JSON.stringify({code:"askgame", target:data.sid}));
break;
}
case "disconnect":
if (!!error)
return alert(error);
const ctype = this.classifyObject(this.newchallenge);
- const cto = this.newchallenge.to.slice(0, this.newchallenge.nbPlayers);
+ const cto = this.newchallenge.to.slice(0, this.newchallenge.nbPlayers - 1);
// NOTE: "from" information is not required here
let chall =
{
// * - prepare and start new game (if challenge is full after acceptation)
// * --> include challenge ID (so that opponents can delete the challenge too)
clickChallenge: function(c) {
+
+ console.log("click challenge");
+ console.log(c);
+
if (!!c.accepted)
{
this.st.conn.send(JSON.stringify({code: "withdrawchallenge",
// TODO: if special FEN, show diagram after loading variant
c.accepted = confirm("Accept challenge?");
}
- const action = (c.accepted ? "accept" : "refuse");
this.st.conn.send(JSON.stringify({
- code: action + "challenge",
+ code: (c.accepted ? "accept" : "refuse") + "challenge",
cid: c.id, target: c.from.sid}));
- if (c.type == "corr")
+ if (c.type == "corr" && c.accepted)
{
ajax(
"/challenges",
"PUT",
- {action: action, id: this.challenges[cIdx].id}
+ {action: "accept", id: this.challenges[cIdx].id}
);
}
if (!c.accepted)
}
}
},
- // c.type == corr alors use id...sinon sid (figés)
- // NOTE: only for live games ?
+ // NOTE: for live games only (corr games are launched on server)
launchGame: async function(c) {
// Just assign colors and pass the message
const vname = this.getVname(c.vid);
localStorage["increment"] = tc.increment;
localStorage["started"] = JSON.stringify(
[...Array(gameInfo.players.length)].fill(false));
- localStorage["mysid"] = this.st.user.sid;
localStorage["vname"] = this.getVname(gameInfo.vid);
localStorage["fenInit"] = gameInfo.fen;
localStorage["players"] = JSON.stringify(gameInfo.players);
if (this.st.settings.sound >= 1)
new Audio("/sounds/newgame.mp3").play().catch(err => {});
+ // TODO: redirect to game
},
},
};