Summary Files Commits Branches @commit @diff @stats
path: root / Year 2 / Computer Graphics with WebGL / Project / menu.js
diff options
context:
space:
mode:
Commit8608f2c0e0d02e58df9280eab03a6b7a96acd5f1 (patch)
Author
 Syndamia <kamen@syndamia.com>
2023-08-27 14:58:32 +0300
Committer
 Syndamia <kamen@syndamia.com>
2023-08-27 14:58:32 +0300
Files35b68a6658b87c4770f632ce31e85cec725eb334 /Year 2/Computer Graphics with WebGL/Project/menu.js
uni-projects-8608f2c0e0d02e58df9280eab03a6b7a96acd5f1.tar
uni-projects-8608f2c0e0d02e58df9280eab03a6b7a96acd5f1.tar.gz
uni-projects-8608f2c0e0d02e58df9280eab03a6b7a96acd5f1.zip
Parent2ca6d751de5c6933e6d75289d184a980131036a2 (diff)
[WGL/P] Added a proper level management system, added more options to the menu
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);