Use web worker for timer so progress can take place in the background

This commit is contained in:
Eric Fredricksen
2021-12-09 13:00:32 -08:00
committed by Eric Fredricksen
parent 01f208d1a5
commit 620c850966
3 changed files with 19 additions and 11 deletions
-2
View File
@@ -186,8 +186,6 @@
</div> </div>
<br>
<div id="paused"><br>PAUSED</div> <div id="paused"><br>PAUSED</div>
</body> </body>
+18 -9
View File
@@ -1,22 +1,32 @@
// Copyright (c)2002-2010 Eric Fredricksen <e@fredricksen.net> all rights reserved // Copyright (c)2002-2010 Eric Fredricksen <e@fredricksen.net> all rights reserved
var game = {}; var game = {};
var lasttick, timerid; var clock;
function timeGetTime() { function timeGetTime() {
return new Date().getTime(); return new Date().getTime();
} }
function StartTimer() { function StartTimer() {
if (!timerid) { if (!clock) {
lasttick = timeGetTime(); clock = new Worker('clock.js');
timerid = setTimeout(Timer1Timer, 100); clock.addEventListener('message', e => {
Timer1Timer();
clock.lasttick = timeGetTime();
});
}
if (!clock.running) {
clock.lasttick = timeGetTime();
clock.running = true;
clock.postMessage('start');
} }
} }
function StopTimer() { function StopTimer() {
clearTimeout(timerid); if (clock) {
timerid = null; clock.postMessage('stop');
clock.running = false;
}
} }
function Q(s) { function Q(s) {
@@ -878,7 +888,6 @@ function Pos(needle, haystack) {
var dealing = false; var dealing = false;
function Timer1Timer() { function Timer1Timer() {
timerid = null; // Event has fired
if (TaskBar.done()) { if (TaskBar.done()) {
game.tasks += 1; game.tasks += 1;
game.elapsed += TaskBar.Max().div(1000); game.elapsed += TaskBar.Max().div(1000);
@@ -916,7 +925,7 @@ function Timer1Timer() {
Dequeue(); Dequeue();
} else { } else {
var elapsed = timeGetTime() - lasttick; var elapsed = timeGetTime() - clock.lasttick;
if (elapsed > 100) elapsed = 100; if (elapsed > 100) elapsed = 100;
if (elapsed < 0) elapsed = 0; if (elapsed < 0) elapsed = 0;
TaskBar.increment(elapsed); TaskBar.increment(elapsed);
@@ -1136,7 +1145,7 @@ function FormKeyDown(e) {
} }
if (key === 'p') { if (key === 'p') {
if (timerid) { if (clock && clock.running) {
$('#paused').css('display', 'block'); $('#paused').css('display', 'block');
StopTimer(); StopTimer();
} else { } else {
+1
View File
@@ -109,6 +109,7 @@ body {
-moz-background-size: 100% 100%; -moz-background-size: 100% 100%;
background-attachment: fixed; background-attachment: fixed;
text-align: center; text-align: center;
margin-top: 1em;
} }
div.scroll { div.scroll {