canvas = p5(s => {
s.setup = () => {
s.createCanvas(800,400);
}
s.draw = () => {
var spotSize = s.height/SpotsPerEnvironmentalGridSide
ElementsState.map( (e,i) => {
updateElement(e,i);
})
let eltHover = s.createVector(-100,-100);
if(ElementsState[Math.floor( s.mouseY / spotSize ) * SpotsPerEnvironmentalGridSide
+ Math.floor( s.mouseX / spotSize )] > 0) {
eltHover = s.createVector(0.5 *spotSize + spotSize * Math.floor( s.mouseX / spotSize ),
0.5 *spotSize + spotSize * Math.floor( s.mouseY / spotSize ));
}
s.background(240)
s.noFill()
s.stroke(0)
for(var i=0; i<SpotsPerEnvironmentalGridSide+1; ++i) {
s.line(0, i*s.height/SpotsPerEnvironmentalGridSide, s.height, i*s.height/SpotsPerEnvironmentalGridSide);
s.line(i*s.height/SpotsPerEnvironmentalGridSide, 0, i*s.height/SpotsPerEnvironmentalGridSide, s.height);
}
EnviromentalState.map( (e,i) => {
let x = i % SpotsPerEnvironmentalGridSide * spotSize
let y = Math.floor( i / SpotsPerEnvironmentalGridSide ) * spotSize
s.noStroke()
s.fill(e*255)
s.rect(x,y,spotSize,spotSize)
})
ElementsState.map( (e,i) => {
let x = i % SpotsPerEnvironmentalGridSide * spotSize
let y = Math.floor( i / SpotsPerEnvironmentalGridSide ) * spotSize
s.stroke(0,0,100)
s.fill(e*255, 0, 0)
if(e) {
s.ellipse(x + spotSize*0.5, y + spotSize*0.5, spotSize*0.75, spotSize*0.75)
}
})
s.noStroke()
s.fill(0, 0, 200, 80);
s.ellipse(eltHover.x, eltHover.y, spotSize*1.1,spotSize*1.1)
}
})