Bugfixes: Timer-Zuschlag, Debugfenster-Schalter, Score-Untergrenze

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>
This commit is contained in:
Julian Appel 2026-08-19 21:06:30 +02:00
parent a1cea9c37d
commit 6f4c63aa6e
3 changed files with 15 additions and 27 deletions

View file

@ -7,15 +7,6 @@ let durationLeft = moment.duration(7, 'minutes'); // durationLeft after the t
let isPaused = true; // Status of the timer
// Function prototypes
function start() {};
function pause() {};
function reset() {};
function end() {};
function print() {};
function incDec() {};
function getValues() {};
// Start timer not paused and not already finished
function start() {
if(isPaused == true && durationLeft.asSeconds() != 0) { // Only allow start if timer ist currently paused and durationLeft is not 0 seconds
@ -45,7 +36,9 @@ function pause() {
return false
}
// Reset timer to passed value, and send durationLeft to all clients
// Reset timer to passed value, and send durationLeft to all clients.
// Ein laufender Timer wird bewusst nicht angehalten, sondern zaehlt von der
// neuen Zeit weiter herunter.
function reset(newDuration) {
console.log("Timer Zurückgesetzt");
duration = moment.duration(newDuration, 'seconds').clone(); // Set initial duration to received duration in seconds
@ -69,7 +62,8 @@ function print() {
// Increase or decrease the timer depending on the passed value in seconds
function incDec(value) {
if(Math.abs(value) >= durationLeft.asSeconds()) { // If abs from passed value is greater than seconds left on timer, end timer
if(value < 0 && Math.abs(value) >= durationLeft.asSeconds()) { // Nur beim Verringern: faellt die Restzeit auf 0 oder darunter, Timer beenden
durationLeft = moment.duration(0, 'seconds'); // Restzeit sauber auf 00:00, sonst bliebe der Timer trotz "ENDE" startbar
end();
} else {
durationLeft.add(value, 'second');
@ -87,6 +81,9 @@ function getValues() {
};
}
// duration, durationLeft und isPaused werden bewusst nicht exportiert: Exporte
// werden beim Laden des Moduls einmal ausgewertet und wuerden dauerhaft die
// Startwerte liefern. Der aktuelle Stand kommt ueber getValues().
module.exports = {
duration, durationLeft, isPaused, start, pause, reset, end, print, incDec, getValues
start, pause, reset, end, print, incDec, getValues
}