Skip to content

Commit ef3c480

Browse files
persistence proxies
1 parent e6ed231 commit ef3c480

File tree

1 file changed

+28
-15
lines changed

1 file changed

+28
-15
lines changed

gamepad.js

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,7 @@ export class Gamepad{
112112
const status_element = document.getElementById('gamepad-status');
113113
status_element.textContent = 'No gamepad connected';
114114
status_element.className = 'gamepad-disconnected';
115-
let gamepad_config = localStorage.getItem('gamepad_config');
116-
gamepad_config = gamepad_config !== null ? JSON.parse(gamepad_config) : null;
117-
if(gamepad_config !== null){
118-
delete gamepad_config[gamepad.id];
119-
localStorage.setItem('gamepad_config', JSON.stringify(gamepad_config));
120-
}
115+
this.reset_config(gamepad.id)
121116
document.querySelectorAll('.gamepad-mapping-button').forEach((btn) => { btn.disabled = true; });
122117
this.render_live_view()
123118
};
@@ -143,13 +138,9 @@ export class Gamepad{
143138
if(this.mapper === null && gamepad !== null){
144139
this.mapper = new Mapper(details.type, channel, gamepad, this.control_map, () => {
145140
button.textContent = default_text
146-
// localStorage.setItem('quadrotorGamepadMap', JSON.stringify(controlMap));
147141
document.querySelectorAll('.gamepad-mapping-button').forEach((btn) => { btn.disabled = false; });
148142
this.mapper = null
149-
let gamepad_config = localStorage.getItem('gamepad_config');
150-
gamepad_config = gamepad_config !== null ? JSON.parse(gamepad_config) : {};
151-
gamepad_config[gamepad.id] = this.control_map;
152-
localStorage.setItem('gamepad_config', JSON.stringify(gamepad_config));
143+
this.save_config(gamepad.id)
153144
this.render_live_view()
154145
});
155146
}
@@ -159,6 +150,26 @@ export class Gamepad{
159150
this.listeners = []
160151
this.poll()
161152
}
153+
load_config(id){
154+
let gamepad_config = localStorage.getItem('gamepad_config');
155+
gamepad_config = gamepad_config !== null ? JSON.parse(gamepad_config) : {};
156+
gamepad_config = id in gamepad_config ? gamepad_config[id] : null;
157+
return gamepad_config
158+
}
159+
reset_config(id){
160+
let gamepad_config = localStorage.getItem('gamepad_config');
161+
gamepad_config = gamepad_config !== null ? JSON.parse(gamepad_config) : null;
162+
if(gamepad_config !== null){
163+
delete gamepad_config[id];
164+
localStorage.setItem('gamepad_config', JSON.stringify(gamepad_config));
165+
}
166+
}
167+
save_config(id){
168+
let gamepad_config = localStorage.getItem('gamepad_config');
169+
gamepad_config = gamepad_config !== null ? JSON.parse(gamepad_config) : {};
170+
gamepad_config[id] = this.control_map;
171+
localStorage.setItem('gamepad_config', JSON.stringify(gamepad_config));
172+
}
162173
get_gamepad(){
163174
if(this.gamepad_index === null){
164175
const gamepads = navigator.getGamepads ? navigator.getGamepads() : [];
@@ -171,9 +182,7 @@ export class Gamepad{
171182
status_element.textContent = 'Gamepad connected: ' + gp.id;
172183
status_element.className = 'gamepad-connected';
173184
document.querySelectorAll('.gamepad-mapping-button').forEach((btn) => { btn.disabled = false; });
174-
let gamepad_config = localStorage.getItem('gamepad_config');
175-
gamepad_config = gamepad_config !== null ? JSON.parse(gamepad_config) : {};
176-
gamepad_config = gp.id in gamepad_config ? gamepad_config[gp.id] : null;
185+
const gamepad_config = this.load_config(gp.id);
177186
if(gamepad_config !== null){
178187
this.control_map = gamepad_config;
179188
this.render_live_view()
@@ -200,7 +209,11 @@ export class Gamepad{
200209
let expo_plot = null
201210
if(details.type === 'axis'){
202211
const expo_canvas = element.querySelector('.gamepad-expo-canvas');
203-
this.expo_sliders[control] = element.querySelector('.gamepad-slider-expo');
212+
const expo_slider = element.querySelector('.gamepad-slider-expo')
213+
this.expo_sliders[control] = expo_slider;
214+
expo_slider.addEventListener('input', (event) => {
215+
216+
})
204217
expo_plot = new ExpoPlot(expo_canvas, this.expo_curve);
205218
}
206219
this.callbacks[control] = (value_raw) =>{

0 commit comments

Comments
 (0)