From: b Date: Mon, 23 Mar 2026 22:08:13 +0000 (+0000) Subject: multiple timers; improve ong script X-Git-Tag: v1.2.15 X-Git-Url: http://bicyclesonthemoon.info/git-projects/?a=commitdiff_plain;h=7dc505a917d0ef211c036bab15ff6affbd684c4c;p=ott%2Fbsta multiple timers; improve ong script --- diff --git a/bsta_lib.1.pm b/bsta_lib.1.pm index 8fdb861..a7820b0 100644 --- a/bsta_lib.1.pm +++ b/bsta_lib.1.pm @@ -699,15 +699,26 @@ sub make_timer { } my $tc = 40271; # 11:11:11 + my $tc_9 = $tc * 9; # 99:99:99 + my $tc_f = $tc * 15; # FF:FF:FF + my $tc_y = $tc * 34; # YY:YY:YY + my $tc_z = $tc * 35; # ZZ:ZZ:ZZ my $max_digit; + my $extra_timers = 0; - if ($full_timer <= $tc * 9) { #99:99:99 + while ($timer > $tc_z) { + $extra_timers += 1; + $timer -= $tc_z; + $full_timer -= $tc_z; + } + + if ($full_timer <= $tc_9) { # 99:99:99 $max_digit = 9; } - elsif ($full_timer <= $tc * 15) { # FF:FF:FF + elsif ($full_timer <= $tc_f) { # FF:FF:FF $max_digit = 15; # F } - elsif ($full_timer > $tc * 34) { # YY:YY:YY + elsif ($full_timer > $tc_y) { # YY:YY:YY $max_digit = 35; # Z } else { @@ -741,7 +752,8 @@ sub make_timer { return ( make_timer_digit($digit[5]).make_timer_digit($digit[4]), make_timer_digit($digit[3]).make_timer_digit($digit[2]), - make_timer_digit($digit[1]).make_timer_digit($digit[0]) + make_timer_digit($digit[1]).make_timer_digit($digit[0]), + $extra_timers ); } @@ -1007,7 +1019,7 @@ sub print_viewer_page { my $timer_color_m = (($timer_unlocked >= 2) || ($ong_state >= STATE->{'ready'})) ? 'br' : 'ni'; my $timer_color_s = (($timer_unlocked >= 3) || ($ong_state >= STATE->{'ready'})) ? 'br' : 'ni'; - (my $timer_h, my $timer_m, my $timer_s) = make_timer( + (my $timer_h, my $timer_m, my $timer_s, my $timer_x) = make_timer( $timer, $full_timer, $frame, $ong_state ); @@ -1410,11 +1422,18 @@ sub print_viewer_page { print $fh '
'."\n"; if ($show_timer) { - print $fh ' '; - print $fh '['.$timer_h.''; - print $fh ':'.$timer_m.''; - print $fh ':'.$timer_s.']'; - print $fh '
'."\n"; + while ($timer_x >= 0) { + my $timer_n = ($timer_x > 0) ? $timer_x : ''; + print $fh ' '; + print $fh '['.$timer_h.''; + print $fh ':'.$timer_m.''; + print $fh ':'.$timer_s.']'; + print $fh '
'."\n"; + $timer_h = '--'; + $timer_m = '--'; + $timer_s = '--'; + $timer_x -= 1; + } } print $fh ' >'; if ($show_command_link) { diff --git a/ong.1.pl b/ong.1.pl index 31867b2..2855d68 100644 --- a/ong.1.pl +++ b/ong.1.pl @@ -111,6 +111,12 @@ $timer = int($settings{'dynamicongtime'}); $last = int($settings{'last'}); $frame = int($state {'last'}); +if ($frame >= $last) { + print "END\n\n"; + close ($fh); + exit; +} + if ($ongstate == STATE->{'ready'}) { $frame += 1; print 'next frame: '.$frame."\n"; @@ -119,12 +125,12 @@ else { print 'not ready'."\n"; } -if (($timer > 0) && ($frame < $last)) { - $timer = int($timer / ($last - $frame)); -} -else { +if ($timer <= 0) { $timer = 1; } +elsif ($frame < $last) { + $timer = int($timer / ($last - $frame)); +} if ($static_timer > $timer) { $timer = $static_timer; } diff --git a/timer.js b/timer.js index 11b2ca0..86fad42 100644 --- a/timer.js +++ b/timer.js @@ -41,37 +41,70 @@ function i2d (i) { } window.onload = function () { - var e_h; - var e_m; - var e_s; - var h; - var m; - var s; + var e_h = []; + var e_m = []; + var e_s = []; + var h = []; + var m = []; + var s = []; var hms; var digits; var countdown; - var timer; + var timer = []; + var n = -1; + var x = -1; var base = [10, 6, 10, 6, 10, 10]; - e_h = document.getElementById("ongh"); - e_m = document.getElementById("ongm"); - e_s = document.getElementById("ongs"); - - if (e_h == null || e_m == null || e_s == null) { - // window.alert("NUL"); - return; + for (var i=0; ; ++i) { + var ind = i; + if (ind == 0) + ind = ''; + e_h[i] = document.getElementById("ongh"+ind); + e_m[i] = document.getElementById("ongm"+ind); + e_s[i] = document.getElementById("ongs"+ind); + + if (e_h[i] == null || e_m[i] == null || e_s[i] == null) { + // window.alert("NUL "+i); + break; + } + + h[i] = e_h[i].innerHTML; + m[i] = e_m[i].innerHTML; + s[i] = e_s[i].innerHTML; + + if (h[i].length != 2 || m[i].length != 2 || s[i].length != 2) { + // window.alert("LENGTH "+i); + break; + } + + timer[i] = document.getElementById("timer"+ind); + timer[i].onclick = function () { + enabled = !enabled; + if (!(enabled && valid)) + return; + for (var j=x; j > 0; --j) { + if (j > n) { + var block = timer[j].parentNode; + var br = timer[j].nextSibling; + block.removeChild(timer[j]); + block.removeChild(br); + --x; + continue; + } + e_h[j].innerHTML = h[j]; + e_m[j].innerHTML = m[j]; + e_s[j].innerHTML = s[j]; + } + }; + n = i; + x = n; } - - h = e_h.innerHTML; - m = e_m.innerHTML; - s = e_s.innerHTML; - - if (h.length != 2 || m.length != 2 || s.length != 2) { - // window.alert("LENGTH"); + if (n < 0) { + // window.alert("NO"); return; } - hms = h + ":" + m + ":" + s; + hms = h[n] + ":" + m[n] + ":" + s[n]; if ( hms == "00:00:NG" || @@ -83,22 +116,12 @@ window.onload = function () { } digits = []; - digits[0] = d2i(s[1]); - digits[1] = d2i(s[0]); - digits[2] = d2i(m[1]); - digits[3] = d2i(m[0]); - digits[4] = d2i(h[1]); - digits[5] = d2i(h[0]); - - timer = document.getElementById("timer"); - timer.onclick = function () { - enabled = !enabled; - if (enabled && valid) { - e_h.innerHTML = h; - e_m.innerHTML = m; - e_s.innerHTML = s; - } - } + digits[0] = d2i(s[n][1]); + digits[1] = d2i(s[n][0]); + digits[2] = d2i(m[n][1]); + digits[3] = d2i(m[n][0]); + digits[4] = d2i(h[n][1]); + digits[5] = d2i(h[n][0]); countdown = setInterval (function() { var stop = true; @@ -125,21 +148,42 @@ window.onload = function () { digits[2] == 0 && digits[3] == 0 && digits[4] == 0 && digits[5] == 0 ) { - h = "00"; - m = "00"; - s = "NG"; - // window.alert("ONG"); - clearInterval(countdown); + if (n > 0) { + --n; + h[n] = 'ZZ'; + m[n] = 'ZZ'; + s[n] = 'ZZ'; + digits[0] = d2i(s[n][1]); + digits[1] = d2i(s[n][0]); + digits[2] = d2i(m[n][1]); + digits[3] = d2i(m[n][0]); + digits[4] = d2i(h[n][1]); + digits[5] = d2i(h[n][0]); + } + else { + h[n] = "00"; + m[n] = "00"; + s[n] = "NG"; + // window.alert("ONG"); + clearInterval(countdown); + } } else { - h = i2d(digits[5]) + i2d(digits[4]); - m = i2d(digits[3]) + i2d(digits[2]); - s = i2d(digits[1]) + i2d(digits[0]); + h[n] = i2d(digits[5]) + i2d(digits[4]); + m[n] = i2d(digits[3]) + i2d(digits[2]); + s[n] = i2d(digits[1]) + i2d(digits[0]); } if (enabled) { - e_h.innerHTML = h; - e_m.innerHTML = m; - e_s.innerHTML = s; + while (x > n) { + var block = timer[x].parentNode; + var br = timer[x].nextSibling; + block.removeChild(timer[x]); + block.removeChild(br); + --x; + } + e_h[n].innerHTML = h[n]; + e_m[n].innerHTML = m[n]; + e_s[n].innerHTML = s[n]; } valid = true; }, 1000);