make regular cyclist work in the background

+ use worker-timers in Repl
+ repl / cyclist now accept custom interval functions
This commit is contained in:
Felix Roos 2024-03-22 01:01:17 +01:00
parent 7889017434
commit 14a5e7dcb6
5 changed files with 51 additions and 6 deletions

View file

@ -8,7 +8,7 @@ import createClock from './zyklus.mjs';
import { logger } from './logger.mjs';
export class Cyclist {
constructor({ interval, onTrigger, onToggle, onError, getTime, latency = 0.1 }) {
constructor({ interval, onTrigger, onToggle, onError, getTime, latency = 0.1, setInterval, clearInterval }) {
this.started = false;
this.cps = 0.5;
this.num_ticks_since_cps_change = 0;
@ -57,6 +57,10 @@ export class Cyclist {
}
},
interval, // duration of each cycle
0.1,
0.1,
setInterval,
clearInterval,
);
}
now() {

View file

@ -17,6 +17,8 @@ export function repl({
editPattern,
onUpdateState,
sync = false,
setInterval,
clearInterval,
}) {
const state = {
schedulerError: undefined,
@ -44,6 +46,8 @@ export function repl({
updateState({ started });
onToggle?.(started);
},
setInterval,
clearInterval,
};
// NeoCyclist uses a shared worker to communicate between instances, which is not supported on mobile chrome