<template lang="pug">
main
- input#modalChat.modal(type="checkbox" @change="toggleChat")
+ input#modalChat.modal(type="checkbox" @click="resetChatColor")
div#chatWrap(role="dialog" data-checkbox="modalChat"
aria-labelledby="inputChat")
#chat.card
label.modal-close(for="modalChat")
+ #participants
+ span {{ Object.keys(people).length }} participant(s):
+ span(v-for="p in Object.values(people)" v-if="!!p.name")
+ | {{ p.name }}
+ span.anonymous(v-if="Object.values(people).some(p => !p.name)")
+ | + @nonymous
Chat(:players="game.players" :pastChats="game.chats"
@newchat-sent="finishSendChat" @newchat-received="processChat")
.row
#aboveBoard.col-sm-12.col-md-9.col-md-offset-3.col-lg-10.col-lg-offset-2
button#chatBtn(onClick="doClick('modalChat')") Chat
- #actions(v-if="game.mode!='analyze' && game.score=='*'")
+ #actions(v-if="game.score=='*'")
button(@click="clickDraw" :class="{['draw-' + drawOffer]: true}") Draw
button(@click="abortGame") Abort
button(@click="resign") Resign
#playersInfo
p
- span.name(:class="{connected: isConnected(0)}") {{ game.players[0].name }}
+ span.name(:class="{connected: isConnected(0)}")
+ | {{ game.players[0].name || "@nonymous" }}
span.time(v-if="game.score=='*'") {{ virtualClocks[0] }}
span.split-names -
- span.name(:class="{connected: isConnected(1)}") {{ game.players[1].name }}
+ span.name(:class="{connected: isConnected(1)}")
+ | {{ game.players[1].name || "@nonymous" }}
span.time(v-if="game.score=='*'") {{ virtualClocks[1] }}
BaseGame(:game="game" :vr="vr" ref="basegame"
@newmove="processMove" @gameover="gameOver")
case "pollclients":
{
data.sockIds.forEach(sid => {
- // TODO: understand clearly what happens here, problems when a
- // game is quit, and then launch a new game from hall.
if (!!this.people[sid])
return;
this.$set(this.people, sid, {id:0, name:""});
break;
}
case "askgame":
- // Send current (live) game
+ // Send current (live) game if not asked by opponent (!)
+ if (this.game.players.some(p => p.sid == data.from))
+ return;
const myGame =
{
// Minimal game informations:
if (this.repeat[repIdx] >= 3)
this.drawOffer = "threerep";
},
- toggleChat: function() {
+ resetChatColor: function() {
+ // TODO: this is called twice, once on opening an once on closing
document.getElementById("chatBtn").style.backgroundColor = "#e2e2e2";
},
finishSendChat: function(chat) {
GameStorage.update(this.gameRef.id, {chat: chat});
},
processChat: function() {
- if (!document.getElementById("inputChat").checked)
+ if (!document.getElementById("modalChat").checked)
document.getElementById("chatBtn").style.backgroundColor = "#c5fefe";
},
gameOver: function(score, scoreMsg) {
- this.game.mode = "analyze";
this.game.score = score;
this.game.scoreMsg = scoreMsg;
const myIdx = this.game.players.findIndex(p => {
.connected
background-color: lightgreen
+#participants
+ margin-left: 5px
+
+.anonymous
+ color: grey
+ font-style: italic
+
@media screen and (min-width: 768px)
#actions
width: 300px
@media screen and (max-width: 767px)
#aboveBoard
text-align: center
+@media screen and (min-width: 768px)
+ #aboveBoard
+ margin-left: 30%
.name
font-size: 1.5rem