xxxxxxxxxx
89
let sourceModules;
const offsetX = 10;
const offsetY = 80;
function preload() {
// Load module Image
sourceModules = loadImage("assets/modules.png");
}
function setup() {
let w = offsetX * 4 + moduleCols * moduleSize + slotCols * slotSize;
let h = offsetY * 2 + moduleRows * moduleSize;
createCanvas(w, h);
background(51, 41, 54);
initModules();
initSlots();
initMisc();
}
function draw() {
// Draw Modules
for (let i = 0; i < Object.keys(modules).length; i++) {
modules[i].show(offsetX, offsetY);
}
// Draw Slots
for (let i = 0; i < slotCols; i++) {
for (let j = 0; j < slotRows; j++) {
slots[i][j].show(width / 2 + offsetX, offsetY);
}
}
}
function mousePressed() {
if (mouseX < width / 2) {
// Handle Modules
selectModules(mouseX - offsetX, mouseY - offsetY);
} else {
// Handle Slots
selectSlots(mouseX-width / 2- offsetX, mouseY- offsetY);
}
}
function mouseMoved() {
highlightModules(mouseX - offsetX, mouseY - offsetY);
// prevent default
return false;
}
function initMisc(){
textSize(32);
textAlign(CENTER, CENTER);
textStyle(BOLD);
fill(112, 93, 118);
text('MODULES', width*0.25, offsetY/2);
text('SLOTS', width*0.75, offsetY/2);
buttonA = createButton('All');
buttonA.position(width*0.25-45 + offsetX, height-offsetY+20);
buttonA.mousePressed(btnAll);
buttonN = createButton('None');
buttonN.position(width*0.25+5, height-offsetY+20);
buttonN.mousePressed(btnNone);
buttonR = createButton('Reset');
buttonR.position(width / 2 + offsetX, height-offsetY+20);
buttonR.mousePressed(reset);
textSize(8);
text("Attempt to re-create Oskar Stålberg's Wave 'Game' in p5js", width*0.25, height-offsetY*0.1);
text('Just a random number for Dan: '+ round(random(100000,999999)), width*0.75, height-offsetY*0.1);
}
function reset() {
initSlots();
slots.forEach(el =>{
el.forEach(e=>{
startWave(e);
})
})
}
function btnAll(){
switchModules(true);
}
function btnNone(){
switchModules(false);
}