h('button',
{
on: { click: this.clickGameSeek },
- attrs: { "aria-label": translations['New online game'] },
+ attrs: { "aria-label": translations['New live game'] },
'class': {
"tooltip": true,
"play": true,
},
[h('i', { 'class': { "material-icons": true } }, "accessibility")])
);
- if (["idle","chat","computer"].includes(this.mode))
+ if (variant!="Dark" && ["idle","chat","computer"].includes(this.mode))
{
actionArray.push(
h('button',
[h('i', { 'class': { "material-icons": true } }, "computer")])
);
}
- if (["idle","chat","friend"].includes(this.mode))
+ if (variant!="Dark" && ["idle","chat","friend"].includes(this.mode))
{
actionArray.push(
h('button',
_.range(sizeY).map(j => {
let cj = (this.mycolor=='w' ? j : sizeY-j-1);
let elems = [];
- if (this.vr.board[ci][cj] != VariantRules.EMPTY)
+ if (this.vr.board[ci][cj] != VariantRules.EMPTY && (variant!="Dark"
+ || this.score!="*" || this.vr.isEnlightened(ci,cj,this.mycolor)))
{
elems.push(
h(
'light-square': (i+j)%2==0,
'dark-square': (i+j)%2==1,
[this.color]: true,
+ 'in-shadow': variant=="Dark" && this.score=="*"
+ && !this.vr.isEnlightened(ci,cj,this.mycolor),
'highlight': showLight && !!lm && _.isMatch(lm.end, {x:ci,y:cj}),
'incheck': showLight && incheckSq[ci][cj],
},
h('button',
{
on: { click: this.undoInGame },
- attrs: { "aria-label": trnaslations['Undo'] },
+ attrs: { "aria-label": translations['Undo'] },
"class": {
"play": true,
"spaceleft": true,
h('button',
{
on: { click: () => { this.mycolor = this.vr.getOppCol(this.mycolor) } },
- attrs: { "aria-label": translations['Flip'] },
+ attrs: { "aria-label": translations['Flip board'] },
"class": {
"play": true,
"spaceleft": true,
{
attrs: { "id": "titleFenedit" },
"class": { "section": true },
- domProps: { innerHTML: translations["Position + flags (FEN):"] },
+ domProps: { innerHTML: translations["Game state (FEN):"] },
}
),
h('input',
)
);
}
- // Show current FEN
- elementArray.push(
- h('div',
- {
- attrs: { id: "fen-div" },
- "class": { "section-content": true },
- },
- [
- h('p',
- {
- attrs: { id: "fen-string" },
- domProps: { innerHTML: this.vr.getBaseFen() },
- "class": { "text-center": true },
- }
- )
- ]
- )
- );
+ if (variant != "Dark" || this.score!="*")
+ {
+ // Show current FEN
+ elementArray.push(
+ h('div',
+ {
+ attrs: { id: "fen-div" },
+ "class": { "section-content": true },
+ },
+ [
+ h('p',
+ {
+ attrs: { id: "fen-string" },
+ domProps: { innerHTML: this.vr.getBaseFen() },
+ "class": { "text-center": true },
+ }
+ )
+ ]
+ )
+ );
+ }
}
return h(
'div',
// We opened another tab on the same game
this.mode = "idle";
this.vr = null;
- alert("Already playing a game in this variant on another tab!");
+ alert(translations[
+ "Already playing a game in this variant on another tab!"]);
break;
case "newgame": //opponent found
// oppid: opponent socket ID
delete localStorage[prefix+"score"];
},
// HACK because mini-css tooltips are persistent after click...
+ // NOTE: seems to work only in chrome/chromium. TODO...
getRidOfTooltip: function(elt) {
elt.style.visibility = "hidden";
setTimeout(() => { elt.style.visibility="visible"; }, 100);
{
const storageVariant = localStorage.getItem("variant");
if (!!storageVariant && storageVariant !== variant)
- return alert("Finish your " + storageVariant + " game first!");
+ {
+ return alert(translations["Finish your "] +
+ storageVariant + translations[" game first!"]);
+ }
// Send game request and wait..
try {
this.conn.send(JSON.stringify({code:"newgame", fen:fen}));
const score = localStorage.getItem("comp-score");
if (storageVariant !== variant && score == "*")
{
- if (!confirm("Unfinished " + storageVariant +
- " computer game will be erased"))
+ if (!confirm(storageVariant +
+ translations[": unfinished computer game will be erased"]))
{
return;
}
const fen = localStorage.getItem(prefix+"fen");
const score = localStorage.getItem(prefix+"score"); //set in "endGame()"
this.fenStart = localStorage.getItem(prefix+"fenStart");
+ this.vr = new VariantRules(fen, moves);
if (mode == "human")
{
this.gameId = localStorage.getItem("gameId");
code:"ping",oppid:this.oppid,gameId:this.gameId}));
}
else
+ {
this.compWorker.postMessage(["init",fen]);
- this.vr = new VariantRules(fen, moves);
+ if (this.mycolor != this.vr.turn)
+ this.playComputerMove();
+ }
if (moves.length > 0)
{
const lastMove = moves[moves.length-1];