@@ -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