- showGame: function(game) {
- // NOTE: if we are an observer, the game will be found in main games list
- // (sent by connected remote players)
- // TODO: game path ? /vname/gameId seems better
- this.$router.push("/" + game.id);
- },
- tryChallenge: function(player) {
- if (player.id == 0)
- return; //anonymous players cannot be challenged
- this.newchallenge.to[0] = player.name;
- doClick("modalNewgame");
- },
-// * - accept challenge (corr or live) --> send info to all concerned players
-// * - cancel challenge (click on sent challenge) --> send info to all concerned players
-// * - withdraw from challenge (if >= 3 players and previously accepted)
-// * --> send info to all concerned players
-// * - refuse challenge (or receive refusal): send to all challenge players (from + to)
-// * except us ; graphics: modal again ? (inline ?)
-// * - prepare and start new game (if challenge is full after acceptation)
-// * --> include challenge ID (so that opponents can delete the challenge too)
-// * Also send to all connected players (only from me)
- clickChallenge: function(challenge) {
- // TODO: also correspondance case (send to server)
- const index = this.challenges.findIndex(c => c.id == challenge.id);
- const toIdx = challenge.to.findIndex(name => name == this.st.user.name);
- if (toIdx >= 0)
- {
- // It's a multiplayer challenge I accepted: withdraw
- this.st.conn.send(JSON.stringify({code:"withdrawchallenge",
- cid:challenge.id, user:this.st.user.sid}));
- this.challenges.to.splice(toIdx, 1);
- }
- else if (challenge.from.id == user.id) //it's my challenge: cancel it
- {
- this.st.conn.send(JSON.stringify({code:"cancelchallenge", cid:challenge.id}));
- this.challenges.splice(index, 1);
- }
- else //accept a challenge
- {
- this.st.conn.send(JSON.stringify({code:"acceptchallenge",
- cid:challenge.id, user:me}));
- this.challenges[index].to.push(me);
- }
- // TODO: accepter un challenge peut lancer une partie, il
- // faut alors supprimer challenge + creer partie + la retourner et l'ajouter ici
- // si pas le mien et FEN speciale :: (charger code variante et)
- // montrer diagramme + couleur (orienté)
- },
- // user: last person to accept the challenge (TODO: revoir ça)
-// newGame: function(chall, user) {
-// const fen = chall.fen || V.GenRandInitFen();
-// const game = {}; //TODO: fen, players, time ...
-// //setStorage(game); //TODO
-// game.players.forEach(p => { //...even if game is by corr (could be played live, why not...)
-// this.conn.send(
-// JSON.stringify({code:"newgame", oppid:p.id, game:game}));
-// });
-// if (this.settings.sound >= 1)
-// new Audio("/sounds/newgame.mp3").play().catch(err => {});
-// },
- // Load a variant file (TODO: should probably be global)
- loadVariant: async function(vid, variantArray) {
- const idxInVariants = variantArray.findIndex(v => v.id == vid);
- const vname = variantArray[idxInVariants].name;