Summary Files Commits Branches @commit @diff @stats
path: root / Year 2 / Computer Graphics with WebGL / Project / menu.js
diff options
context:
space:
mode:
1 files changed, 52 insertions, 0 deletions
-rw-r--r--Year 2/Computer Graphics with WebGL/Project/menu.js52
diff --git a/Year 2/Computer Graphics with WebGL/Project/menu.js b/Year 2/Computer Graphics with WebGL/Project/menu.js
new file mode 100644
index 0000000..83a8e3c
--- /dev/null
+++ b/Year 2/Computer Graphics with WebGL/Project/menu.js
@@ -0,0 +1,52 @@
+function initMenu() {
+ initLevels();
+ debugChange.call(debugModeCB);
+}
+
+const debugModeCB = document.getElementById('debug-mode');
+function debugChange() {
+ if(this.checked) {
+ gl.uniform4f(uBlack, 1,0,0,1);
+ gl.uniform4f(uBHBlack, 0,1,0,1);
+ }
+ else {
+ gl.uniform4f(uBlack, 0,0,0,1);
+ gl.uniform4f(uBHBlack, 0,0,0,1);
+ }
+}
+debugModeCB.addEventListener('change', debugChange);
+
+const onlyHorizontalCB = document.getElementById('only-horizontal');
+function horChange() {
+ onlyHorizontal = this.checked;
+}
+horChange.call(horChange);
+onlyHorizontalCB.addEventListener('change', horChange);
+
+const onlyVerticalCB = document.getElementById('only-vertical');
+function verChange() {
+ onlyVertical = this.checked;
+}
+verChange.call(onlyVerticalCB);
+onlyVerticalCB.addEventListener('change', verChange);
+
+/* Levels */
+
+const levelSelect = document.getElementById('level-select');
+const levelDesc = document.getElementById('level-description');
+
+function initLevels() {
+ for (var i = 0; i < levels.length; i++) {
+ var elem = document.createElement('option');
+ elem.value = i;
+ elem.innerText = levels[i].name;
+ levelSelect.appendChild(elem);
+ }
+ levelChange.call(levelSelect);
+}
+
+function levelChange() {
+ levelDesc.innerText = levels[this.value].description;
+ levels[this.value].load();
+}
+levelSelect.addEventListener('change', levelChange);