X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FHall.vue;h=1031e49c75b2cc07c806f52d5ba9e319a3df6172;hb=efdfb4c70f4a4391b8571726d924cdf58baba41c;hp=5ceb7e329b0b3bf8c43d843b9e6385cf1ba5cc50;hpb=09d375717c256a2cbd71a5d3b3a4e21aee17c0ec;p=vchess.git diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue index 5ceb7e32..1031e49c 100644 --- a/client/src/views/Hall.vue +++ b/client/src/views/Hall.vue @@ -45,15 +45,21 @@ main fieldset label(for="cadence") {{ st.tr["Cadence"] }} * div#predefinedCadences - button(type="button") 5+3 button(type="button") 15+5 button(type="button") 45+30 - button(type="button") 7d+2d + button(type="button") 3d + button(type="button") 7d input#cadence( type="text" v-model="newchallenge.cadence" - placeholder="5+0, 1h+30s, 7d+1d ..." + placeholder="5+0, 1h+30s, 5d ..." ) + fieldset + label(for="selectRandomLevel") {{ st.tr["Randomness"] }} + select#selectRandomLevel(v-model="newchallenge.randomness") + option(value="0") {{ st.tr["Deterministic"] }} + option(value="1") {{ st.tr["Symmetric random"] }} + option(value="2") {{ st.tr["Asymmetric random"] }} fieldset(v-if="st.user.id > 0") label(for="selectPlayers") {{ st.tr["Play with?"] }} input#selectPlayers( @@ -71,7 +77,7 @@ main button(@click="newChallenge()") {{ st.tr["Send challenge"] }} input#modalPeople.modal( type="checkbox" - @click="resetChatColor()" + @click="resetSocialColor()" ) div#peopleWrap( role="dialog" @@ -83,7 +89,7 @@ main #players p( v-for="sid in Object.keys(people)" - v-if="!!people[sid].name" + v-if="people[sid].name" ) span {{ people[sid].name }} button.player-action( @@ -178,6 +184,7 @@ export default { vid: parseInt(localStorage.getItem("vid")) || 0, to: "", //name of challenged player (if any) cadence: localStorage.getItem("cadence") || "", + randomness: parseInt(localStorage.getItem("randomness")) || 2, // VariantRules object, stored to not interfere with // diagrams of targetted challenges: V: null, @@ -209,7 +216,8 @@ export default { anonymousCount: function() { let count = 0; Object.values(this.people).forEach(p => { - count += !p.name ? 1 : 0; + // Do not cound people who did not send their identity yet: + count += (!p.name && p.id === 0) ? 1 : 0; }); return count; } @@ -393,7 +401,7 @@ export default { url += "?rid=" + g.rids[Math.floor(Math.random() * g.rids.length)]; this.$router.push(url); }, - resetChatColor: function() { + resetSocialColor: function() { // TODO: this is called twice, once on opening an once on closing document.getElementById("peopleBtn").classList.remove("somethingnew"); }, @@ -412,17 +420,18 @@ export default { data.sockIds.forEach(s => { const page = s.page || "/"; if (s.sid != this.st.user.sid && !identityAsked[s.sid]) { - identityAsked[s.sid] = true; this.send("askidentity", { target: s.sid, page: page }); + identityAsked[s.sid] = true; } if (!this.people[s.sid]) - this.$set(this.people, s.sid, { id: 0, name: "", pages: [page] }); + // Do not set name or id: identity unknown yet + this.$set(this.people, s.sid, { pages: [page] }); else if (this.people[s.sid].pages.indexOf(page) < 0) this.people[s.sid].pages.push(page); if (!s.page) - //peer is in Hall + // Peer is in Hall this.send("askchallenge", { target: s.sid }); - //peer is in Game + // Peer is in Game else this.send("askgame", { target: s.sid, page: page }); }); break; @@ -434,20 +443,17 @@ export default { // So it's a good idea to ask identity if he was anonymous. // But only ask game / challenge if currently disconnected. if (!this.people[data.from]) { - this.$set(this.people, data.from, { - name: "", - id: 0, - pages: [page] - }); + this.$set(this.people, data.from, { pages: [page] }); if (data.code == "connect") this.send("askchallenge", { target: data.from }); else this.send("askgame", { target: data.from, page: page }); } else { - // append page if not already in list + // Append page if not already in list if (this.people[data.from].pages.indexOf(page) < 0) this.people[data.from].pages.push(page); } - if (this.people[data.from].id == 0) { + if (!this.people[data.from].name && this.people[data.from].id !== 0) { + // Identity not known yet this.newConnect[data.from] = true; //for self multi-connects tests this.send("askidentity", { target: data.from, page: page }); } @@ -486,10 +492,6 @@ export default { } case "killed": // I logged in elsewhere: - // TODO: this fails. See https://github.com/websockets/ws/issues/489 - //this.conn.removeEventListener("message", this.socketMessageListener); - //this.conn.removeEventListener("close", this.socketCloseListener); - //this.conn.close(); this.conn = null; alert(this.st.tr["New connexion detected: tab now offline"]); break; @@ -506,6 +508,11 @@ export default { } case "identity": { const user = data.data; + this.$set(this.people, user.sid, { + id: user.id, + name: user.name, + pages: this.people[user.sid].pages + }); if (user.name) { // If I multi-connect, kill current connexion if no mark (I'm older) if ( @@ -519,14 +526,6 @@ export default { this.killed[this.st.user.sid] = true; } } - if (user.sid != this.st.user.sid) { - //I already know my identity... - this.$set(this.people, user.sid, { - id: user.id, - name: user.name, - pages: this.people[user.sid].pages - }); - } } delete this.newConnect[user.sid]; break; @@ -545,6 +544,7 @@ export default { id: c.id, from: this.st.user.sid, to: c.to, + randomness: c.randomness, fen: c.fen, vid: c.vid, cadence: c.cadence, @@ -565,6 +565,7 @@ export default { ) { let newChall = Object.assign({}, chall); newChall.type = this.classifyObject(chall); + newChall.randomness = chall.randomness; newChall.added = Date.now(); let fromValues = Object.assign({}, this.people[chall.from]); delete fromValues["pages"]; //irrelevant in this context @@ -723,6 +724,8 @@ export default { } // NOTE: "from" information is not required here let chall = Object.assign({}, this.newchallenge); + delete chall["V"]; + delete chall["diag"]; const finishAddChallenge = cid => { chall.id = cid || "c" + getRandString(); // Remove old challenge if any (only one at a time of a given type): @@ -757,6 +760,7 @@ export default { // Remember cadence + vid for quicker further challenges: localStorage.setItem("cadence", chall.cadence); localStorage.setItem("vid", chall.vid); + localStorage.setItem("randomness", chall.randomness); document.getElementById("modalNewgame").checked = false; // Show the challenge if not on current display if ( @@ -845,7 +849,7 @@ export default { // These game informations will be shared let gameInfo = { id: getRandString(), - fen: c.fen || V.GenRandInitFen(), + fen: c.fen || V.GenRandInitFen(c.randomness), // White player index 0, black player index 1: players: c.mycolor ? (c.mycolor == "w" ? [c.seat, c.from] : [c.from, c.seat]) @@ -900,7 +904,7 @@ export default { // If an error occurred, game is not added: abort if (!err) { if (this.st.settings.sound) - new Audio("/sounds/newgame.wav").play().catch(() => {}); + new Audio("/sounds/newgame.flac").play().catch(() => {}); this.$router.push("/game/" + gameInfo.id); } });