Summary Files Commits Branches @commit @diff @stats
path: root / Year 2 / Computer Graphics with WebGL / Project / menu.js
blob: 6a86f1e2318a689cece0252015f3036ce3eed9e0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/* Logic for all controls in the sidebar */

// Since we have gl context, initialise whatever needs it
function initMenu() {
	initLevels();
	debugChange.call(debugModeCB);
	toggleRayMarching.call(disableRayMarching);
}

/* Level items */

const levelSelect = document.getElementById('level-select');
const levelDesc = document.getElementById('level-description');
// Add levels to dropdown box
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);

const animPause = document.getElementById('pause-movement');
function pauseMovement() {
	pauseAnimations = this.checked;
}
pauseMovement.call(animPause);
animPause.addEventListener('change', pauseMovement);

/* Settings items */

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);

coordsElem = document.getElementById('coordinates');
const coordsCB = document.getElementById('coordinates-cb');
function coordscbChange() {
	if (this.checked) coordsElem.classList.remove('hide');
	else              coordsElem.classList.add('hide');
}
coordscbChange.call(coordsCB);
coordsCB.addEventListener('change', coordscbChange);

fpsElem = document.getElementById('fps');
const fpsCB = document.getElementById('fps-cb');
function fpsCBChange() {
	if (this.checked) fpsElem.classList.remove('hide');
	else              fpsElem.classList.add('hide');
}
fpsCBChange.call(fpsCB);
fpsCB.addEventListener('change', fpsCBChange);

const disableRayMarching = document.getElementById('disable-ray-marching');
function toggleRayMarching() {
	gl.uniform1i(uDisableRayMarching, this.checked);
}
disableRayMarching.addEventListener('change', toggleRayMarching);

const onlyHorizontalCB = document.getElementById('only-horizontal');
function horChange() {
	onlyHorizontal = this.checked;
}
horChange.call(onlyHorizontalCB);
onlyHorizontalCB.addEventListener('change', horChange);

const onlyVerticalCB = document.getElementById('only-vertical');
function verChange() {
	onlyVertical = this.checked;
}
verChange.call(onlyVerticalCB);
onlyVerticalCB.addEventListener('change', verChange);