From fa098ad2e03af2ad71600a985df6d75c638d63d1 Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Sun, 25 Feb 2024 22:31:41 +0100 Subject: [PATCH] =?UTF-8?q?=20=F0=9F=9B=9DAdds=20slider=20for=20height=20a?= =?UTF-8?q?nd=20speed=20controls?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/components/Controls.svelte | 36 ++++++++++++++++++++------ app/src/components/input/Button.svelte | 11 ++++++++ app/src/components/input/Range.svelte | 29 +++++++++++++++++++++ app/src/routes/Controller.svelte | 4 +-- 4 files changed, 70 insertions(+), 10 deletions(-) create mode 100644 app/src/components/input/Button.svelte create mode 100644 app/src/components/input/Range.svelte diff --git a/app/src/components/Controls.svelte b/app/src/components/Controls.svelte index c37e0eb..954c86b 100644 --- a/app/src/components/Controls.svelte +++ b/app/src/components/Controls.svelte @@ -2,15 +2,17 @@ import nipplejs from 'nipplejs'; import { onMount } from 'svelte'; import { capitalize, throttler, toInt8 } from '$lib/utilities'; - import { input, outControllerData, mode, modes } from '$lib/stores'; + import { input, outControllerData, mode, modes, type Modes } from '$lib/stores'; import type { vector } from '$lib/models'; + import Range from './input/Range.svelte'; + import Button from './input/Button.svelte'; let throttle = new throttler(); let left: nipplejs.JoystickManager; let right: nipplejs.JoystickManager; let throttle_timing = 40; - let data = new Int8Array(6); + let data = new Int8Array(7); onMount(() => { left = nipplejs.create({ @@ -67,6 +69,15 @@ throttle.throttle(updateData, throttle_timing); }; + const handleRange = (event:CustomEvent, key: 'speed' | 'height') => { + const value:number = event.detail + input.update((inputData) => { + inputData[key] = value; + return inputData; + }); + throttle.throttle(updateData, throttle_timing); + } + const changeMode = (modeValue: Modes) => { mode.set(modeValue); }; @@ -78,14 +89,23 @@
-
+
{#each modes as modeValue} - +
+ +
{/each} +
+ {#if $mode === 'walk'} + handleRange(e, 'speed')}> + {/if} + handleRange(e, 'height')}> +
diff --git a/app/src/components/input/Button.svelte b/app/src/components/input/Button.svelte new file mode 100644 index 0000000..8f47822 --- /dev/null +++ b/app/src/components/input/Button.svelte @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/app/src/components/input/Range.svelte b/app/src/components/input/Range.svelte new file mode 100644 index 0000000..bd95b04 --- /dev/null +++ b/app/src/components/input/Range.svelte @@ -0,0 +1,29 @@ + + +
+ +
+ + diff --git a/app/src/routes/Controller.svelte b/app/src/routes/Controller.svelte index ac332ad..88db930 100644 --- a/app/src/routes/Controller.svelte +++ b/app/src/routes/Controller.svelte @@ -7,9 +7,9 @@
{#if $emulateModel} - + {:else} - + {/if}