default to keyboard/joystick control
This commit is contained in:
19
script.js
19
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;
|
||||
|
||||
Reference in New Issue
Block a user