forked from hackclub/sprig
-
Notifications
You must be signed in to change notification settings - Fork 0
/
run.js
38 lines (26 loc) 路 970 Bytes
/
run.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { dispatch } from "../dispatch.js";
import { evalGameScript } from "../engine/evalGameScript.js";
import { sizeGameCanvas } from "./sizeGameCanvas.js"
export function run(args, state) {
state.logs = [];
state.errorInfo = null;
state.staleRun = false;
const cmLines = document.querySelectorAll(".err-line");
for (let i = 0; i < cmLines.length; i++) {
const cmLine = cmLines[i];
cmLine.classList.remove("err-line");
}
const script = state.codemirror.state.doc.toString();
const err = evalGameScript(script, state.palette);
if (err) dispatch("LOG_ERROR", err);
sizeGameCanvas();
dispatch("RENDER");
// wiggle the canvas window
const gameCanvas = document.querySelector(".game-canvas");
const gameCanvasContainer = document.querySelector(".game-canvas-container");
gameCanvasContainer.classList.add("shake");
gameCanvas.focus();
setTimeout(() => {
gameCanvasContainer.classList.remove("shake");
}, 200)
}