* use cJSON library
* implement array_foreach, custom memory allocator for m_array
* use Doom 1 duration of the "entering" screen for id24 animation
* add player->visitedlevels array
* add U_BuildEpisodes function, try to emulate behaviour of KEX port and R&R
* 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.