* scan for soundfonts relative to executable and config directory
* fix string concat
* explicitly track recursive calls of ScanDir()
* free() strings early
* track recursion in-function
* scan relative directories recursively only
* back to per-call recursion tracking
* do not traverse up out of the config directory
* Remove obsolete camera update check
No longer needed since mouse and gamepad "prep" were separated.
* Use `MIN_F` constant
* Rename "swap" to "southpaw"
* Reorganize gamepad settings and menu items
* Update defaults
* Use consistent gamepad naming
A few exceptions made for joystick names.
* Simplify `deltatics` calculation
* Simplify `I_CalcGamepadAxes()`
* Track axis update time
* Use axis update time for `CalcExtraScale()`
* Extra sensitivity improvements, refactoring
* Add flick stick feature
* Flush gamepad events on reset
* Add separate touchpad touch and press inputs
* Add `joy_flick_mode`
* Add `joy_flick_rotation_speed`
* Enable float data type for events
* Add gyro support
* Update README.md
* Add option to disable analog sticks
Rename setting to be more descriptive and force new default value. Analog sticks can always navigate menus, regardless of this setting.
* Don't scale flick stick by regular stick sensitivity
When in flick stick mode and holding strafe modifier, regular stick sensitivity still applies.
* Add local space turn/lean options
* Add player space turn/lean options
* Add calibration option
* Remove "clear calibration" menu item
* Fix DisableItem and DisableItemFunc checks
* Add back gyro "tightening" menu item
Set a recommended default. Power users will want to disable this.
* Add gyro "steadying" menu item to combine smoothing and tightening
* Combine gyro space/enable into one setting
* Load gyro calibration once
* Lower max steadying and use 0.1 increments
Also update default steadying threshold to 3.0 degrees/second.
* Cosmetic changes
* Use degrees/second for analog stick speed
A default of 240 degrees/second is an unofficial standard used in many FPS games.
* Disable menu items if joy_enable is set to 0
* Show raw value dot on thermos for deadzone and steadying
Similar to the concept featured in Ironwail. Also reduce scope for some variables.
* Fix opening/closing a gamepad multiple times
SDL_CONTROLLERDEVICEREMOVED events send the instance ID, not the index.
* Enable/disable menu items when gamepad is opened/closed
* Cosmetic change
* Use button names that match gamepad platform
Can be overridden with `joy_platform`. Config read/write always uses Xbox-centric naming, as before.
* Improve touchpad key binding response
* Use sensor state for gyro data instead of events
Read the sensor state instead of using SDL_CONTROLLERSENSORUPDATE events as a workaround for low update rate gyro devices (e.g. Switch controllers). When the menu is active, temporarily enable SDL_CONTROLLERSENSORUPDATE events to capture as many samples as possible for calibration.
* Allow more actions to confirm/cancel "restore defaults"
So that gamepad users can confirm/cancel.
* Let MENU_BACKSPACE back out of menu item selection
Except for binding an input. This allows gamepad users to press B/circle to back out of menu items.
* Reduce scope for `motion`
* Reduce scope for `flick`
* Cosmetic changes
* Change menu item dots to meters with color
* Add "invert" gyro button action
* Use separate gyro space/enable (again)
Let players toggle gyro aiming on/off quickly without affecting the desired gyro space, which is an abstract concept.
Fixes#1821
This could as well be achieved by dynamically allocating the arrays,
but we'd have to restrict to 10 episodes anyway, because more won't
fit on the episode selection menu screen.