timerIncDec beendete den Timer auch beim Hinzufuegen von Zeit: die Pruefung verglich den Betrag des Werts mit der Restzeit, ohne die Richtung zu beachten. Bei 5s Restzeit fuehrte "+10s" damit zum Spielende statt zu 15s. Die Pruefung gilt jetzt nur noch fuer negative Werte. Beim Verringern unter 0 wird die Restzeit zusaetzlich sauber auf 00:00 gesetzt, sonst blieb sie stehen und der Timer war trotz "ENDE" auf dem Monitor wieder startbar. Im Debugfenster zeigten alle drei Label auf scoreSwitchEnable. Ein Klick auf den Text "Teamanzeige spiegeln" oder "Splashscreen anzeigen" blendete damit das Scoreboard aus. Jede Beschriftung zeigt jetzt auf ihren eigenen Schalter. scoreSetScore sendet den neuen Stand jetzt wie alterScore und clearScore an die Monitore; der Endpunkt wird vom Panel nicht verwendet, ist aber dokumentiert. alterScore laesst den Spielstand nicht mehr unter 0 laufen. Die toten Funktionsprototypen in timer.js und score.js sind entfernt: sie wurden durch Hoisting ohnehin ueberschrieben und listeten toggleReferenceMirrored und print schon nicht mehr auf. Ebenso die Wert-Snapshots duration, durationLeft und isPaused aus module.exports, die dauerhaft die Startwerte lieferten. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
121 lines
No EOL
3.1 KiB
JavaScript
121 lines
No EOL
3.1 KiB
JavaScript
const io = require('./socketio');
|
|
const db = require('../controllers/db');
|
|
|
|
let enabled = true;
|
|
let teamA = {
|
|
name: "Team A",
|
|
name2: "",
|
|
score: 0,
|
|
isSpielgemeinschaft: 0,
|
|
};
|
|
let teamB = {
|
|
name: "Team B",
|
|
name2: "",
|
|
score: 0,
|
|
isSpielgemeinschaft: 0,
|
|
};
|
|
let sideswitch = false; // Attribute to switch sides after halftime
|
|
let referenceMirrored = false; // If sitting behind the scoreboard, switch sides for admin board
|
|
|
|
// Enable or disable the scoreboard
|
|
function setEnabled(status) {
|
|
enabled = status;
|
|
}
|
|
|
|
// Setzt Namen und Spielgemeinschafts-Status eines Teams
|
|
function configTeam(team, name, name2, isSpielgemeinschaft) {
|
|
if(team == "teamA") {
|
|
teamA.name = name;
|
|
teamA.name2 = name2;
|
|
teamA.isSpielgemeinschaft = isSpielgemeinschaft;
|
|
} else if(team == "teamB") {
|
|
teamB.name = name;
|
|
teamB.name2 = name2;
|
|
teamB.isSpielgemeinschaft = isSpielgemeinschaft;
|
|
}
|
|
}
|
|
|
|
// Set score of team to passed value
|
|
function setScore(team, score) {
|
|
if(team == "teamA") {
|
|
teamA.score = score;
|
|
} else if(team == "teamB") {
|
|
teamB.score = score;
|
|
}
|
|
io.sockets.emit('score', print()); // Wie alterScore und clearScore den Monitor mitziehen
|
|
}
|
|
|
|
// Ändert den Score eines Teams um 1 — Richtung "inc" (erhöhen) oder "dec" (verringern)
|
|
function alterScore(team, dir) {
|
|
if(team == "teamA") {
|
|
if(dir == "inc") {
|
|
teamA.score++;
|
|
console.log("teamA inc");
|
|
}
|
|
else if(dir == "dec" && teamA.score > 0) { // Kein negativer Spielstand
|
|
teamA.score--;
|
|
console.log("teamA dec");
|
|
}
|
|
} else if(team == "teamB") {
|
|
if(dir == "inc") {
|
|
teamB.score++;
|
|
console.log("teamB inc");
|
|
}
|
|
else if(dir == "dec" && teamB.score > 0) { // Kein negativer Spielstand
|
|
teamB.score--;
|
|
console.log("teamB dec");
|
|
}
|
|
}
|
|
io.sockets.emit('score', print());
|
|
}
|
|
|
|
// Clears score of both teams
|
|
function clearScore() {
|
|
teamA.score = 0;
|
|
teamB.score = 0;
|
|
io.sockets.emit('score', print());
|
|
}
|
|
|
|
// Toggle sideswitch
|
|
function toggleSideswitch() {
|
|
console.log("Seiten gewechselt");
|
|
sideswitch = !sideswitch;
|
|
io.sockets.emit('score', print());
|
|
io.sockets.emit('scoreSideswitch', '');
|
|
}
|
|
|
|
// Mirror team position on admin panel
|
|
function toggleReferenceMirrored() {
|
|
referenceMirrored = !referenceMirrored;
|
|
}
|
|
|
|
// Return enabled value
|
|
function getEnabled() {
|
|
return enabled
|
|
}
|
|
|
|
// Print current score depending on sideswitch
|
|
function print() {
|
|
if(sideswitch) {
|
|
return teamB.score + ":" + teamA.score
|
|
} else {
|
|
return teamA.score + ":" + teamB.score
|
|
}
|
|
}
|
|
|
|
// Return all important values
|
|
function getValues() {
|
|
return {
|
|
enabled: enabled,
|
|
teamA: teamA,
|
|
teamB: teamB,
|
|
sideswitch: sideswitch,
|
|
referenceMirrored: referenceMirrored,
|
|
print: print(),
|
|
teams: db.getTeams(),
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
setEnabled, configTeam, setScore, alterScore, clearScore, toggleSideswitch, toggleReferenceMirrored, getEnabled, getValues,
|
|
} |