]> git.sesse.net Git - ultimatescore/commitdiff
Only slew clock if more than two seconds off.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sat, 20 Oct 2018 11:52:30 +0000 (13:52 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sat, 20 Oct 2018 11:53:27 +0000 (13:53 +0200)
client/mainwindow.cpp
score.js

index 7de922c5c614710ca03053183168286f0044b996..032591e03f215c4b2e6a0b5da533d2926743a981 100644 (file)
@@ -441,13 +441,14 @@ void MainWindow::bt6000_message_received(const string &msg)
                int minutes = parse_clock(msg[5], msg[6]);
                int seconds = parse_clock(msg[7], msg[8]);
 
+               map<string, string> param;
+               param["clock_min"] = to_string(minutes);
+               param["clock_sec"] = to_string(seconds);
+               ws->send_command("update " + serialize_as_json(param));
+               ws->send_command("eval adjustclockfromstate()");
+
                if (clock_running) {
                        ws->send_command("eval startclock()");
-                       map<string, string> param;
-                       param["clock_min"] = to_string(minutes);
-                       param["clock_sec"] = to_string(seconds);
-                       ws->send_command("update " + serialize_as_json(param));
-                       ws->send_command("eval setclockfromstate()");
                } else {
                        ws->send_command("eval stopclock()");
                }
index 133a7d834383c97398f8f6283177901af2fe1146..67099a8cb4b6620471d4072288b5bcacd6063139 100644 (file)
--- a/score.js
+++ b/score.js
@@ -63,6 +63,15 @@ function setclockfromstate()
        setclock(amount);
 }
 
+function adjustclockfromstate()
+{
+       let amount = parseInt(state['clock_min']) * 60 + parseInt(state['clock_sec']);
+       let elapsed = time_elapsed_raw();
+       if (Math.abs(amount - elapsed) >= 2.0) {
+               setclock(amount);
+       }
+}
+
 function setclocklimitfromstate()
 {
        let amount = parseInt(state['clock_limit_min']) * 60 + parseInt(state['clock_limit_sec']);
@@ -145,7 +154,7 @@ function hidelowerthird()
        lowerthird_visible = false;
 }
 
-function time_elapsed()
+function time_elapsed_raw()
 {
        let elapsed = (Date.now() - clock_origin) * 1e-3;
        if (clock_elapsed + elapsed >= clock_limit) {
@@ -154,7 +163,12 @@ function time_elapsed()
                clock_running = false;
                return clock_limit;
        }
-       return Math.floor(clock_elapsed + elapsed);
+       return clock_elapsed + elapsed;
+}
+
+function time_elapsed()
+{
+       return Math.floor(time_elapsed_raw());
 }
 
 function update_clock()