diff --git a/script.js b/script.js
index ee2f80a..15a0340 100644
--- a/script.js
+++ b/script.js
@@ -49,6 +49,9 @@ class Joystick {
}
touchInRange(x, y) {
+ if (!this.visible)
+ return false;
+
const deltaX = x - this.x;
const deltaY = y - this.y;
const dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
@@ -399,7 +402,7 @@ const preset16OctBtn = document.getElementById('preset-16oct');
*/
// Control mode state
-let isManualInputMode = false; // true = keyboard/gamepad mode, false = slider mode
+let isManualInputMode = true; // true = keyboard/gamepad mode, false = slider mode
// Keyboard state tracking
const keyState = {
@@ -447,6 +450,9 @@ keyboardMaxRotation.addEventListener('input', (e) => {
});
keyboardMaxRotationOutput.textContent = parseFloat(keyboardMaxRotation.value);
+
+const supportsTouch = (navigator.maxTouchPoints > 0);
+
// Control mode toggle
controlModeToggle.addEventListener('click', () => {
isManualInputMode = !isManualInputMode;
@@ -464,13 +470,15 @@ controlModeToggle.addEventListener('click', () => {
vxOutput.textContent = '0';
vyOutput.textContent = '0';
omegaOutput.textContent = '0';
- leftJoystick.setIsVisible(true);
- rightJoystick.setIsVisible(true);
+ if (supportsTouch) {
+ leftJoystick.setIsVisible(true);
+ rightJoystick.setIsVisible(true);
+ }
} else {
// Switch to slider mode
sliderControls.style.display = 'block';
keyboardControls.style.display = 'none';
- controlModeToggle.textContent = 'Switch to Keyboard/Joystick Controls';
+ controlModeToggle.textContent = supportsTouch ? 'Switch to Keyboard/Joystick Controls' : 'Switch to Keyboard';
// Reset manual input state
Object.keys(keyState).forEach(key => keyState[key] = false);
@@ -991,9 +999,6 @@ function drawRobot(ctx, robot, heading) {
}
// Initialize Variables
-// Joysticks
-const supportsTouch = (navigator.maxTouchPoints > 0);
-
// General robot
const robotSize = 200;