@@ -195,11 +195,30 @@ func _create_event(event_type: String, params: Dictionary):
195195 ev .button_index = int (params .get ("button" , 0 ))
196196 return ev
197197 "joy_axis" :
198- if not params .has ("axis" ):
198+ var axis_param = params .get ("axis" , null )
199+ if axis_param == null :
199200 return ErrorCodes .make (ErrorCodes .MISSING_REQUIRED_PARAM ,
200201 "event_type='joy_axis' requires axis (JoyAxis index, e.g. 0=left stick X, 1=left stick Y)." )
202+ var axis : int
203+ match typeof (axis_param ):
204+ TYPE_INT :
205+ axis = axis_param
206+ TYPE_FLOAT :
207+ if axis_param != floor (axis_param ):
208+ return ErrorCodes .make (ErrorCodes .VALUE_OUT_OF_RANGE ,
209+ "joy_axis axis must be an integer JoyAxis index (got %s )." % str (axis_param ))
210+ axis = int (axis_param )
211+ TYPE_STRING :
212+ var axis_text := str (axis_param )
213+ if not axis_text .is_valid_int ():
214+ return ErrorCodes .make (ErrorCodes .WRONG_TYPE ,
215+ "joy_axis axis must be an integer JoyAxis index (got '%s ')." % axis_text )
216+ axis = int (axis_text )
217+ _ :
218+ return ErrorCodes .make (ErrorCodes .WRONG_TYPE ,
219+ "joy_axis axis must be an integer JoyAxis index (got %s )." % type_string (typeof (axis_param )))
201220 var ev := InputEventJoypadMotion .new ()
202- ev .axis = int ( params . get ( " axis" , 0 ))
221+ ev .axis = axis
203222 ev .axis_value = float (params .get ("axis_value" , 1.0 ))
204223 return ev
205224 return ErrorCodes .make (ErrorCodes .VALUE_OUT_OF_RANGE ,
0 commit comments