game.system.Menu = () => { let state; const menuElement = document.getElementById("menu"); const escapeEventListener = (e) => { if (e.key == "Escape") { setState('main'); } }; const setState = (newState) => { state = newState; draw(); }; const bringUpMenu = () => { game.running = false; game.assets.music.pause(); window.addEventListener("keydown", escapeEventListener); setState("main"); }; const hide = () => { menuElement.style.display = "none"; game.startLoop(); }; const listenFor = (action, elementId) => { const element = document.getElementById(elementId); element.innerHTML = "Listening..."; const handleKey = (event) => { window.removeEventListener("keydown", handleKey); if (event.key == "Escape") { element.innerHTML = menu.controls[action]; return; } game.controls[action] = event.key; localStorage.setItem("controls", JSON.stringify(game.controls)); element.innerHTML = event.key; }; window.addEventListener("keydown", handleKey); }; const setLevel = (index) => { game.loadLevelIndex(index); hide(); }; const draw = () => { menuElement.style.display = "block"; menuElement.innerHTML = `

Big Blue Is You

`; if (state == "main") { menuElement.innerHTML += ` `; } else if (state == "controls") { menuElement.innerHTML += `

Move left:
Move right:
Move up:
Move down:
Undo:
Reset:

`; } else if (state == "credits") { menuElement.innerHTML += `

Sprites from Baba Is You, as hosted here, and a few custom ones.
Background is from PinImg.
Music is Fluffing A Duck by Kevin MacLeod.
Other sound effects generated on SFXR.
Developed by Logan Hunt, Ethan Payne

`; } else if (state == "levelSelect") { menuElement.innerHTML += `

Select a level to play:

${ game.levels.map((level, index) => { return ``; }).join("") } `; } if (!game.win) { menuElement.innerHTML += ""; } if (state !== "main") { menuElement.innerHTML += ""; } }; return { bringUpMenu, setState, listenFor, hide, setLevel, state }; };