projects
/
vchess.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Finished Hall.js for now - TODO: live + corr games
[vchess.git]
/
client
/
src
/
views
/
Hall.vue
diff --git
a/client/src/views/Hall.vue
b/client/src/views/Hall.vue
index
2c9b483
..
fa89259
100644
(file)
--- a/
client/src/views/Hall.vue
+++ b/
client/src/views/Hall.vue
@@
-130,7
+130,11
@@
export default {
"GET",
{uid: this.st.user.id, excluded: true},
response => {
"GET",
{uid: this.st.user.id, excluded: true},
response => {
- this.games = this.games.concat(response.games);
+ this.games = this.games.concat(response.games.map(g => {
+ const type = this.classifyObject(g);
+ const vname = this.getVname(g.vid);
+ return Object.assign({}, g, {type: type, vname: vname});
+ }));
}
);
// Also ask for corr challenges (open + sent to me)
}
);
// Also ask for corr challenges (open + sent to me)
@@
-167,7
+171,7
@@
export default {
return this.challenges.filter(c => c.type == type);
},
filterGames: function(type) {
return this.challenges.filter(c => c.type == type);
},
filterGames: function(type) {
- return this.games.filter(
c => c
.type == type);
+ return this.games.filter(
g => g
.type == type);
},
classifyObject: function(o) { //challenge or game
// Heuristic: should work for most cases... (TODO)
},
classifyObject: function(o) { //challenge or game
// Heuristic: should work for most cases... (TODO)
@@
-288,7
+292,7
@@
export default {
// Minimal game informations:
id: game.id,
players: game.players.map(p => p.name),
// Minimal game informations:
id: game.id,
players: game.players.map(p => p.name),
- v
name: game.vname
,
+ v
id: game.vid
,
timeControl: game.timeControl,
};
this.st.conn.send(JSON.stringify({code:"game",
timeControl: game.timeControl,
};
this.st.conn.send(JSON.stringify({code:"game",
@@
-312,7
+316,7
@@
export default {
const pIdx = this.people.findIndex(p => p.sid == data.from);
newChall.from = this.people[pIdx]; //may be anonymous
newChall.added = Date.now(); //TODO: this is reception timestamp, not creation
const pIdx = this.people.findIndex(p => p.sid == data.from);
newChall.from = this.people[pIdx]; //may be anonymous
newChall.added = Date.now(); //TODO: this is reception timestamp, not creation
- newChall.vname = this.getVname(newChall.vid);
//TODO: just send vname?
+ newChall.vname = this.getVname(newChall.vid);
this.challenges.push(newChall);
break;
}
this.challenges.push(newChall);
break;
}
@@
-324,6
+328,7
@@
export default {
{
let newGame = data.game;
newGame.type = this.classifyObject(data.game);
{
let newGame = data.game;
newGame.type = this.classifyObject(data.game);
+ newGame.vname = this.getVname(data.game.vid);
newGame.rid = data.from;
newGame.score = "*";
this.games.push(newGame);
newGame.rid = data.from;
newGame.score = "*";
this.games.push(newGame);
@@
-334,10
+339,7
@@
export default {
{
// New game just started: data contain all information
if (data.gameInfo.type == "live")
{
// New game just started: data contain all information
if (data.gameInfo.type == "live")
- {
this.startNewGame(data.gameInfo);
this.startNewGame(data.gameInfo);
- // TODO: redirect to game
- }
else
{
// TODO: notify with game link but do not redirect
else
{
// TODO: notify with game link but do not redirect
@@
-399,6
+401,7
@@
export default {
// Send challenge to peers (if connected)
this.sendSomethingTo(chall.to, "challenge", {chall:chall}, !!warnDisconnected);
chall.added = Date.now();
// Send challenge to peers (if connected)
this.sendSomethingTo(chall.to, "challenge", {chall:chall}, !!warnDisconnected);
chall.added = Date.now();
+ // NOTE: vname and type are redundant (can be deduced from timeControl + vid)
chall.type = ctype;
chall.vname = vname;
chall.from = this.st.user;
chall.type = ctype;
chall.vname = vname;
chall.from = this.st.user;
@@
-479,11
+482,8
@@
export default {
},
// NOTE: when launching game, the challenge is already deleted
launchGame: async function(c) {
},
// NOTE: when launching game, the challenge is already deleted
launchGame: async function(c) {
- const vname = this.getVname(c.vid);
- const vModule = await import("@/variants/" + vname + ".js");
+ const vModule = await import("@/variants/" + c.vname + ".js");
window.V = vModule.VariantRules;
window.V = vModule.VariantRules;
- // Extract times (in [milli]seconds), set clocks
- const tc = extractTime(c.timeControl);
// These game informations will be sent to other players
const gameInfo =
{
// These game informations will be sent to other players
const gameInfo =
{
@@
-491,10
+491,7
@@
export default {
fen: c.fen || V.GenRandInitFen(),
players: shuffle([c.from, c.seat]), //white then black
vid: c.vid,
fen: c.fen || V.GenRandInitFen(),
players: shuffle([c.from, c.seat]), //white then black
vid: c.vid,
- timeControl: tc.timeControl,
- mainTime: tc.mainTime,
- increment: tc.increment,
- type: c.type,
+ timeControl: c.timeControl,
};
this.st.conn.send(JSON.stringify({code:"newgame",
gameInfo:gameInfo, target:c.seat.sid}));
};
this.st.conn.send(JSON.stringify({code:"newgame",
gameInfo:gameInfo, target:c.seat.sid}));
@@
-509,17
+506,15
@@
export default {
);
}
},
);
}
},
- // NOTE: for live games only (corr games
are launched on
server)
+ // NOTE: for live games only (corr games
start on the
server)
startNewGame: function(gameInfo) {
startNewGame: function(gameInfo) {
- const game = Object.assign(gameInfo, {
- // More game infos: constant
- vname: this.getVname(gameInfo.vid),
+ const game = Object.assign({}, gameInfo, {
+ // (other) Game infos: constant
fenStart: gameInfo.fen,
fenStart: gameInfo.fen,
- mode: "live", //function for live games only
- // Game state: will be updated
+ // Game state (including FEN): will be updated
moves: [],
moves: [],
- clocks: [
tc.mainTime, tc.mainTime],
- initime: [
Date.now(), 0],
+ clocks: [
-1, -1], //-1 = unstarted
+ initime: [
0, 0], //timer starts after first 2 half-moves
score: "*",
});
GameStorage.add(game);
score: "*",
});
GameStorage.add(game);