From a5069f3949fb8fc561a72153177f716c62f1cc3d Mon Sep 17 00:00:00 2001 From: 10672208+mind-ar <10672208+mind-ar@users.noreply.github.com> Date: Fri, 22 Mar 2024 23:09:37 +0000 Subject: [PATCH] movido loop flushevents a frontend --- public/game/sketch.js | 6 ++++++ src/commands/run.ts | 28 ++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/public/game/sketch.js b/public/game/sketch.js index 21fee17..d4c4b21 100644 --- a/public/game/sketch.js +++ b/public/game/sketch.js @@ -8,6 +8,7 @@ var cellPixelSize var images = new Array() var visuals = new Array() var sounds = new Map() +const fps = 10 function preload() { loadAllImages() @@ -30,10 +31,14 @@ function setup() { }) loadBackground() loadVisuals() + frameRate(fps); socket.emit("ready") + } function draw() { + console.log("draw") + socket.emit("flushEvents", 1000/fps) clear() if (backgroundImage) background(backgroundImage) drawVisuals() @@ -78,6 +83,7 @@ function loadAllImages() { function loadVisuals() { socket.on("visuals", (visualsList) => { + console.log("visuals") visuals = visualsList }) } diff --git a/src/commands/run.ts b/src/commands/run.ts index 8173002..42519cf 100644 --- a/src/commands/run.ts +++ b/src/commands/run.ts @@ -207,8 +207,32 @@ export const eventsFor = (io: Server, interpreter: Interpreter, dynamicDiagramCl socket.emit('sizeCanvasInic', [sizeCanvas.width, sizeCanvas.height]) socket.emit('cellPixelSize', gameSingleton.get('cellSize')!.innerNumber!) socket.emit('background', background) + interpreter.send('flushEvents', gameSingleton, interpreter.reify(100)) + }) + socket.on('flushEvents', time => { + try { + const tsInicio = performance.now() + timer += time + interpreter.send('flushEvents', gameSingleton, interpreter.reify(timer)) + // We could pass the interpreter but a program does not change it + dynamicDiagramClient.onReload() + const tsFin = performance.now() + if(tsFin - tsInicio > time) { + logger.warn(failureDescription(`flushEvents took ${(tsFin - tsInicio).toFixed(2)} ms`)) + } + + if (!gameSingleton.get('running')?.innerBoolean) { + process.exit(0) + } + } catch (error: any) { + interpreter.send('stop', gameSingleton) + socket.emit('errorDetected', error.message) + } + }) + +/* const flushInterval = 100 const id = setInterval(() => { try { @@ -226,9 +250,9 @@ export const eventsFor = (io: Server, interpreter: Interpreter, dynamicDiagramCl clearInterval(id) } }, flushInterval) - +*/ socket.on('disconnect', () => { - clearInterval(id) + // clearInterval(id) logger.info(successDescription('Game finished')) })