From 8602b53260039c1722e1dd483ff183a620909e37 Mon Sep 17 00:00:00 2001 From: Tamius Han Date: Sat, 28 Dec 2024 03:14:53 +0100 Subject: [PATCH] Fix sliders, but for real --- .../src/PlayerUiPanels/PlayerUiSettings.vue | 62 ++++++++++++++----- 1 file changed, 48 insertions(+), 14 deletions(-) diff --git a/src/csui/src/PlayerUiPanels/PlayerUiSettings.vue b/src/csui/src/PlayerUiPanels/PlayerUiSettings.vue index c1a5908..d456009 100644 --- a/src/csui/src/PlayerUiPanels/PlayerUiSettings.vue +++ b/src/csui/src/PlayerUiPanels/PlayerUiSettings.vue @@ -22,7 +22,7 @@ -
+
Popup activator position:
@@ -56,7 +56,7 @@
-
+
Edit trigger zone:
@@ -67,18 +67,19 @@
@@ -95,12 +96,13 @@ min="0" max="1" step="0.01" - @input="(event) => setPlayerRestrictions('minEnabledHeight', event.target.value, true)" + @input="(event) => setPlayerRestrictions('minEnabledHeight', event.target.value)" + @change="(event) => saveSettings()" > @@ -169,14 +171,46 @@ export default { ], created() { }, - mounted() { + computed: { + maxEnabledWidth() { + const v = this.settings.active.ui.inPlayer.maxEnabledWidth * 100; + return this.optionalToFixed(v, 0); + }, + minEnabledHeight() { + const v = this.settings.active.ui.inPlayer.minEnabledHeight * 100; + return this.optionalToFixed(v, 0); + } }, methods: { - setUiPage(key, event) { - + forcePositiveNumber(value) { + // Change EU format to US if needed + // | remove everything after second period if necessary + // | | | remove non-numeric characters + // | | | | + return value.replaceAll(',', '.').split('.', 2).join('.').replace(/[^0-9.]/g, ''); }, - saveSettings() { + optionalToFixed(v, n) { + if ((`${v}`.split('.')[1]?.length ?? 0) > n) { + return v.toFixed(n); + } + return v; + }, + setPlayerRestrictions(key, value, isTextInput) { + if (isTextInput) { + value = (+this.forcePositiveNumber(value) / 100); + } + if (isNaN(+value)) { + value = 0.5; + } + + this.settings.active.ui.inPlayer[key] = value; + }, + saveSettings(forceRefresh) { this.settings.saveWithoutReload(); + + if (forceRefresh) { + this.$nextTick( () => this.$forceRefresh() ); + } }, startTriggerZoneEdit() { this.eventBus.send('start-trigger-zone-edit');