Initial game controller support.
Actions are based on the Switch branch but the controller code itself is
implemented differently, allowing for easy remapping and minimizing
changes to the Source/ directory.
Many subtle and not so subtle controller bugs have been fixed
in this implementation, including:
1. Smoother & more responsive movement with the joysticks.
2. Consistent controls for all the menus in the game (stores, quest log,
etc).
3. Cursor appearance / disappearance at appropriate times.
Low-level controls are abstracted and 3 SDL interfaces are supported:
game controller, joystick, and keyboard. See SourceX/controls/ for more
details on this.
Wishlist for the future:
1. Primary button and use button should attack continously.
This is hard as it requires checking the cooldowns / attack speed.
2. Quick spell menu navigation is very buggy. It is also buggy in the
switch branch. I haven't had a change to investigate.
- Hide cursor on joystick move, show cursor on mouse move.
- Auto aim at closest monsters, objs or items.
- Inventory grid snap navigation
- Speed spell grid snap navigation
- Char stat snaps navigation
- Town portal auto casts if using a controller
- Can now identify and repair items via controller
- Can dropping items in inventory via controller
Declare const char* arguments to get proper string conversion. Some of
these warnings still remain, as it involves code from Source/ directory.
According to https://github.com/diasurgical/devilutionX/issues/279,
those fixes should not be made outside of SourceX/.
Fixes audio in movies on RG350!
From SDL docs: The legacy calls are good both for backwards compatibility and when you don't care about multiple, specific, or capture devices.
* Get a fresh window surface before rendering to it
It is possible that a window surface gets invalidated since we initially
obtained it. We need to call GetWindowSurface every time we want one,
instead of keeping a pointer to a possibly stale one.
See https://hg.libsdl.org/SDL/file/369b01006eb2/src/video/SDL_video.c#l2312Fixes#351
1. Fix lines moving up and down on slower devices.
2. Cache rendered text surfaces (in a ring buffer).
3. SDL_Delay(1) between event polls to reduce CPU usage.
4. Move data to a separate compilation unit.
Refs #231
* Debian Package update
* Missing font & icons fix
* Fedora package update
* Fedora package update
* Fixing #333 Linux Font Path problem
* use of TTF_FONT_PATH
- Use UiOkDialog() to display all error messages
- Add SDL simple message, and console fallbacks to UiOkDialog()
- Boot graphics early on to facilitate most error messages with build in
gui
- Some more miniwin clean ups