trimill.xyz/flaskr/templates/projects/mazemaker/v/main.js
2022-06-23 02:23:38 -04:00

47 lines
1.2 KiB
JavaScript

//p5.disableFriendlyErrors = true;
var w, h, mw, mh, cells, fg, bg, wte;
function setup() {
getData();
canvas = createCanvas(w+0.5, h+0.5);
canvas.parent('canvas-wrapper');
canvas.id('maze-canvas');
noLoop();
redraw();
}
function draw() {
var cw = w/mw, ch = h/mh;
background(bg);
stroke(fg);
strokeWeight(wte);
for(x = 0; x < cells.length; x++) {
for(y = 0; y < cells[x].length; y++) {
c = cells[x][y];
if(c[0]) line(x*cw, y*ch, x*cw+cw, y*ch);
if(c[1]) line(x*cw+cw, y*ch, x*cw+cw, y*ch+ch);
if(c[2]) line(x*cw, y*ch+ch, x*cw+cw, y*ch+ch);
if(c[3]) line(x*cw, y*ch, x*cw, y*ch+ch);
}
}
}
function getData() {
w = int(query('w'));
h = int(query('h'));
mw = int(query('mw'));
mh = int(query('mh'));
fg = color('rgb('+query('fg').replace(/_/g, ', ')+')');
bg = color('rgb('+query('bg').replace(/_/g, ', ')+')');
wte = int(query('wte'));
cells = decode(query('code'), mw, mh);
}
function query(key) {
key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, "\\$&"); // escape RegEx meta chars
var match = location.search.match(new RegExp("[?&]"+key+"=([^&]+)(&|$)"));
return match && decodeURIComponent(match[1].replace(/\+/g, " "));
}