Fusionne la terminologie Block en mode Twice
This commit is contained in:
31
app.js
31
app.js
@@ -32,7 +32,7 @@ const PRESETS = {
|
|||||||
const MODES = {
|
const MODES = {
|
||||||
twice: {
|
twice: {
|
||||||
label: "ChessCubing Twice",
|
label: "ChessCubing Twice",
|
||||||
subtitle: "Le gagnant du cube ouvre la partie suivante.",
|
subtitle: "Le gagnant du cube ouvre le Block suivant.",
|
||||||
},
|
},
|
||||||
time: {
|
time: {
|
||||||
label: "ChessCubing Time",
|
label: "ChessCubing Time",
|
||||||
@@ -298,9 +298,9 @@ function initSetupPage() {
|
|||||||
const timeImpact =
|
const timeImpact =
|
||||||
mode === "time"
|
mode === "time"
|
||||||
? `Chronos cumules de ${formatClock(timeInitialMs)} par joueur, ajustes apres chaque phase cube avec plafond de 120 s pris en compte. Aucun temps par coup en mode Time.`
|
? `Chronos cumules de ${formatClock(timeInitialMs)} par joueur, ajustes apres chaque phase cube avec plafond de 120 s pris en compte. Aucun temps par coup en mode Time.`
|
||||||
: "Le gagnant du cube commence la partie suivante, avec double coup V2 possible.";
|
: "Le gagnant du cube commence le Block suivant, avec double coup V2 possible.";
|
||||||
const timingText = moveLimitActive
|
const timingText = moveLimitActive
|
||||||
? `Temps configures : partie ${formatClock(blockDurationMs)}, coup ${formatClock(moveLimitMs)}.`
|
? `Temps configures : Block ${formatClock(blockDurationMs)}, coup ${formatClock(moveLimitMs)}.`
|
||||||
: `Temps configures : Block ${formatClock(blockDurationMs)}, temps de chaque joueur ${formatClock(timeInitialMs)}.`;
|
: `Temps configures : Block ${formatClock(blockDurationMs)}, temps de chaque joueur ${formatClock(timeInitialMs)}.`;
|
||||||
const quotaText = moveLimitActive
|
const quotaText = moveLimitActive
|
||||||
? `Quota actif : ${quota} coups par joueur.`
|
? `Quota actif : ${quota} coups par joueur.`
|
||||||
@@ -325,8 +325,7 @@ function initSetupPage() {
|
|||||||
document.body.classList.toggle("time-setup-mode", !moveLimitActive);
|
document.body.classList.toggle("time-setup-mode", !moveLimitActive);
|
||||||
|
|
||||||
if (blockDurationLabel instanceof HTMLElement) {
|
if (blockDurationLabel instanceof HTMLElement) {
|
||||||
blockDurationLabel.textContent =
|
blockDurationLabel.textContent = "Temps du Block (minutes)";
|
||||||
blockLabel === "Block" ? "Temps du Block (minutes)" : "Temps partie (minutes)";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
syncCompetitionFields();
|
syncCompetitionFields();
|
||||||
@@ -742,7 +741,7 @@ function initChronoPage() {
|
|||||||
document.body.classList.toggle("time-mode", timeMode);
|
document.body.classList.toggle("time-mode", timeMode);
|
||||||
refs.title.textContent = match.config.matchLabel;
|
refs.title.textContent = match.config.matchLabel;
|
||||||
refs.subtitle.textContent = `${blockHeading} - ${MODES[match.config.mode].label} - ${renderModeContext(match)}`;
|
refs.subtitle.textContent = `${blockHeading} - ${MODES[match.config.mode].label} - ${renderModeContext(match)}`;
|
||||||
refs.blockTimerLabel.textContent = timeMode ? "Temps Block" : "Temps partie";
|
refs.blockTimerLabel.textContent = "Temps Block";
|
||||||
refs.blockTimer.textContent = formatClock(match.blockRemainingMs);
|
refs.blockTimer.textContent = formatClock(match.blockRemainingMs);
|
||||||
refs.moveTimer.textContent = usesMoveLimit(match) ? formatClock(match.moveRemainingMs) : "--:--";
|
refs.moveTimer.textContent = usesMoveLimit(match) ? formatClock(match.moveRemainingMs) : "--:--";
|
||||||
refs.moveTimerCard.hidden = timeMode;
|
refs.moveTimerCard.hidden = timeMode;
|
||||||
@@ -775,8 +774,8 @@ function initChronoPage() {
|
|||||||
refs.spineLabel.textContent = timeMode ? "Etat du Block" : "Pret";
|
refs.spineLabel.textContent = timeMode ? "Etat du Block" : "Pret";
|
||||||
refs.spineHeadline.textContent = blockHeading;
|
refs.spineHeadline.textContent = blockHeading;
|
||||||
refs.spineText.textContent =
|
refs.spineText.textContent =
|
||||||
"Demarrez la partie, puis laissez uniquement les deux grandes zones aux joueurs. La page cube prendra automatiquement le relais.";
|
"Demarrez le Block, puis laissez uniquement les deux grandes zones aux joueurs. La page cube prendra automatiquement le relais.";
|
||||||
refs.primaryButton.textContent = timeMode ? "Demarrer le Block" : "Demarrer la partie";
|
refs.primaryButton.textContent = "Demarrer le Block";
|
||||||
refs.arbiterStatus.textContent = `${blockHeading} pret. ${playerName(match, match.currentTurn)} commencera.`;
|
refs.arbiterStatus.textContent = `${blockHeading} pret. ${playerName(match, match.currentTurn)} commencera.`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1256,10 +1255,10 @@ function initCubePage() {
|
|||||||
key: `twice:${match.blockNumber}:${match.cube.round}:${white}:${black}`,
|
key: `twice:${match.blockNumber}:${match.cube.round}:${white}:${black}`,
|
||||||
title: isTie ? "Egalite parfaite" : "Résumé du cube",
|
title: isTie ? "Egalite parfaite" : "Résumé du cube",
|
||||||
winner: winner ? playerName(match, winner) : "Egalite parfaite",
|
winner: winner ? playerName(match, winner) : "Egalite parfaite",
|
||||||
outcome: isTie ? "Rejouer la phase cube" : `${playerName(match, winner)} ouvrira la partie suivante`,
|
outcome: isTie ? "Rejouer la phase cube" : `${playerName(match, winner)} ouvrira le Block suivant`,
|
||||||
summary: isTie
|
summary: isTie
|
||||||
? "Le règlement Twice impose de rejouer immédiatement la phase cube."
|
? "Le règlement Twice impose de rejouer immédiatement la phase cube."
|
||||||
: "Validez ce résultat pour préparer la partie suivante.",
|
: "Validez ce résultat pour preparer le Block suivant.",
|
||||||
actionLabel: isTie ? "Rejouer la phase cube" : "Appliquer et ouvrir la page chrono",
|
actionLabel: isTie ? "Rejouer la phase cube" : "Appliquer et ouvrir la page chrono",
|
||||||
whiteName,
|
whiteName,
|
||||||
blackName,
|
blackName,
|
||||||
@@ -1353,7 +1352,7 @@ function initCubePage() {
|
|||||||
refs.centerValue.textContent = "Phase cube complete";
|
refs.centerValue.textContent = "Phase cube complete";
|
||||||
refs.spineLabel.textContent = "Suite";
|
refs.spineLabel.textContent = "Suite";
|
||||||
refs.spineHeadline.textContent = "Ouvrir la page chrono";
|
refs.spineHeadline.textContent = "Ouvrir la page chrono";
|
||||||
refs.spineText.textContent = "Appliquer le resultat du cube pour preparer la partie suivante.";
|
refs.spineText.textContent = "Appliquer le resultat du cube pour preparer le Block suivant.";
|
||||||
}
|
}
|
||||||
refs.primaryButton.textContent = "Voir le résumé du cube";
|
refs.primaryButton.textContent = "Voir le résumé du cube";
|
||||||
refs.helpStatus.textContent = refs.spineText.textContent;
|
refs.helpStatus.textContent = refs.spineText.textContent;
|
||||||
@@ -1467,7 +1466,7 @@ function createMatch(config) {
|
|||||||
logEvent(
|
logEvent(
|
||||||
newMatch,
|
newMatch,
|
||||||
usesMoveLimit(config.mode)
|
usesMoveLimit(config.mode)
|
||||||
? `Match cree en mode ${MODES[config.mode].label}, cadence ${PRESETS[config.preset].label}, partie ${formatClock(config.blockDurationMs)} et coup ${formatClock(config.moveLimitMs)}.`
|
? `Match cree en mode ${MODES[config.mode].label}, cadence ${PRESETS[config.preset].label}, Block ${formatClock(config.blockDurationMs)} et coup ${formatClock(config.moveLimitMs)}.`
|
||||||
: `Match cree en mode ${MODES[config.mode].label}, cadence ${PRESETS[config.preset].label}, Block ${formatClock(config.blockDurationMs)} et chrono initial ${formatClock(getTimeInitialMs(config))} par joueur, sans temps par coup.`,
|
: `Match cree en mode ${MODES[config.mode].label}, cadence ${PRESETS[config.preset].label}, Block ${formatClock(config.blockDurationMs)} et chrono initial ${formatClock(getTimeInitialMs(config))} par joueur, sans temps par coup.`,
|
||||||
);
|
);
|
||||||
logEvent(newMatch, `Les Blancs commencent ${formatBlockHeading(config, 1)}.`);
|
logEvent(newMatch, `Les Blancs commencent ${formatBlockHeading(config, 1)}.`);
|
||||||
@@ -1782,7 +1781,7 @@ function applyCubeOutcome(storedMatch) {
|
|||||||
|
|
||||||
function prepareNextTwiceBlock(storedMatch, winner) {
|
function prepareNextTwiceBlock(storedMatch, winner) {
|
||||||
const hadDouble = storedMatch.lastMover !== winner && storedMatch.lastMover !== null;
|
const hadDouble = storedMatch.lastMover !== winner && storedMatch.lastMover !== null;
|
||||||
logEvent(storedMatch, `${playerName(storedMatch, winner)} gagne la phase cube et ouvrira la partie suivante.`);
|
logEvent(storedMatch, `${playerName(storedMatch, winner)} gagne la phase cube et ouvrira le Block suivant.`);
|
||||||
|
|
||||||
storedMatch.blockNumber += 1;
|
storedMatch.blockNumber += 1;
|
||||||
storedMatch.phase = "block";
|
storedMatch.phase = "block";
|
||||||
@@ -2264,15 +2263,15 @@ function getTimeInitialMs(matchOrConfig) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getBlockLabel(matchOrConfig) {
|
function getBlockLabel(matchOrConfig) {
|
||||||
return isTimeMode(matchOrConfig) ? "Block" : "Partie";
|
return "Block";
|
||||||
}
|
}
|
||||||
|
|
||||||
function getBlockPhrase(matchOrConfig) {
|
function getBlockPhrase(matchOrConfig) {
|
||||||
return isTimeMode(matchOrConfig) ? "Le Block" : "La partie";
|
return "Le Block";
|
||||||
}
|
}
|
||||||
|
|
||||||
function getBlockGenitivePhrase(matchOrConfig) {
|
function getBlockGenitivePhrase(matchOrConfig) {
|
||||||
return isTimeMode(matchOrConfig) ? "du Block" : "de la partie";
|
return "du Block";
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatBlockHeading(matchOrConfig, blockNumber) {
|
function formatBlockHeading(matchOrConfig, blockNumber) {
|
||||||
|
|||||||
@@ -129,7 +129,7 @@
|
|||||||
<input type="radio" name="mode" value="twice" checked />
|
<input type="radio" name="mode" value="twice" checked />
|
||||||
<strong>ChessCubing Twice</strong>
|
<strong>ChessCubing Twice</strong>
|
||||||
<span>
|
<span>
|
||||||
Le gagnant du cube ouvre la partie suivante et peut obtenir un
|
Le gagnant du cube ouvre le Block suivant et peut obtenir un
|
||||||
double coup V2.
|
double coup V2.
|
||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
@@ -169,7 +169,7 @@
|
|||||||
<legend>Temps personnalisés</legend>
|
<legend>Temps personnalisés</legend>
|
||||||
<div class="timing-grid">
|
<div class="timing-grid">
|
||||||
<label class="field">
|
<label class="field">
|
||||||
<span id="blockDurationLabel">Temps partie (minutes)</span>
|
<span id="blockDurationLabel">Temps du Block (minutes)</span>
|
||||||
<input
|
<input
|
||||||
name="blockMinutes"
|
name="blockMinutes"
|
||||||
type="number"
|
type="number"
|
||||||
|
|||||||
Reference in New Issue
Block a user