aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/Ui.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/Ui.kt')
-rw-r--r--src/main/kotlin/Ui.kt58
1 files changed, 53 insertions, 5 deletions
diff --git a/src/main/kotlin/Ui.kt b/src/main/kotlin/Ui.kt
index e477bec..dd8b0fc 100644
--- a/src/main/kotlin/Ui.kt
+++ b/src/main/kotlin/Ui.kt
@@ -1,23 +1,71 @@
import kotlinx.browser.document
+import kotlinx.dom.removeClass
+import org.w3c.dom.HTMLElement
+import org.w3c.dom.HTMLInputElement
import org.w3c.dom.HTMLSelectElement
-class Ui(private val textureManager: TextureManager, private val afterChange: () -> Unit) {
- private val textureSelect: HTMLSelectElement
+class Ui(private val context: RaycastContext, private val afterChange: () -> Unit) {
+
+ private val textureSelect = registerTextureSetHandler()
+
init {
- textureSelect = registerTextureSetHandler()
+ registerFovInputHandler()
+ registerRaycastPrecisionInputHandler()
+ registerMinimapToggleHandler()
+ registerFisheyeToggleHandler()
}
private fun registerTextureSetHandler(): HTMLSelectElement {
val select = document.getElementById("texture-set") as HTMLSelectElement
select.onchange = {
- textureManager.loadTextures(select.value)
+ context.textureManager.loadTextures(select.value)
afterChange()
}
-
return select
}
+ private fun registerFovInputHandler() {
+ val fov = document.getElementById("fov") as HTMLInputElement
+ val fovValue = document.getElementById("fov-value") as HTMLElement
+ fov.oninput = {
+ context.camera.fov = fov.value.toInt()
+ fovValue.textContent = fov.value
+ afterChange()
+ }
+ }
+
+ private fun registerRaycastPrecisionInputHandler() {
+ val precision = document.getElementById("raycast-precision") as HTMLInputElement
+ val precisionValue = document.getElementById("raycast-precision-value") as HTMLElement
+ precision.oninput = {
+ context.raycastOptions.stepPrecision = precision.value.toInt()
+ precisionValue.textContent = precision.value
+ afterChange()
+ }
+ }
+
+ private fun registerMinimapToggleHandler() {
+ val toggle = document.getElementById("minimap-toggle") as HTMLInputElement
+ val minimap = document.getElementById("minimap") as HTMLElement
+ toggle.onchange = {
+ minimap.hidden = !toggle.checked
+ afterChange()
+ }
+ }
+
+ private fun registerFisheyeToggleHandler() {
+ val fixFisheye = document.getElementById("fisheye-fix") as HTMLInputElement
+ fixFisheye.oninput = {
+ context.raycastOptions.fixFisheye = fixFisheye.checked
+ afterChange()
+ }
+ }
+
fun getSelectedTextureSet(): String {
return textureSelect.value
}
+
+ fun removeLoadingIndicator() {
+ document.getElementById("output-wrapper")?.removeClass("loading")
+ }
} \ No newline at end of file