The Apple guidelines for Apple TV tells that when pressing the menu
button from the root view the user shall be brought to the "Home"
screen, suspending the app. Prevent this to be done in iOS.
When having a hardware keyboard connected to the iOS device the
software keyboard is not shown. However when using stage manager
the notification that the keyboard is shown is still triggered.
This results in that the game screen is resized even though no
keyboard is visible in the area below.
This is some kind of workaround for that where a check for any
connected hardware keyboard is made. If a keyboard is connected
then the screen is not resized, except if the accessory bar should
be shown. In that case the screen is resized only for the height
of the accessory bar.
Some games have some actions mapped to the numeric keyboard, e.g.
Indiana Jones and the last crusade fight scenes.
The alphabetical keyboard doesn't have the numeric button row so
it's a bit tricky to play these scenes without holding the "number
button switch" at the same time you need to press the correct number
button being showed.
Make it possible to switch between an alphabetical keyboard layout
to a numpad layout by adding a button to the toolbar.
Add a long press gesture to the touch mode control button, which
when triggered, shows the keyboard. The image of the UI button
changes to the keyboard image asset as long as the keyboard is
visible. If pressing the touch mode control button while the
keyboard is visible it will dismiss the keyboard.
The updates of the on-screen button image is done in the general
"showKeyboard" and "hideKeyboard" functions which makes sure that
the button image is updated also if showing/hiding of the keyboard
is triggered by the OSystem callback.
Add two UI buttons which are placed to the top right corner over
the main view. The left button controls the current touch mode.
When pressed the button changes image to represent the new touch
mode using the mouse and touchpad assets added in previous commit.
The right button triggers the call to the main menu.
In the Android port it's possible to configure differnet touch modes
in ScummVM menus, 2D games and 3D games. Add the same possibility in
the iOS port. In Android it's possible to configure a touch based
game controller as well. That's not in scope for iOS in this commit
but can be added in the future.
The virtual controller can be configured with different directional
elements. A thumbstick button and Dpad buttons (left, right, down,
up) can be configured.
A user might want to configure which directional element they want
on the virtual controller. Create two different virtual controllers
which can be switched between depending on the setting in the
backend specific option dialog.
The onscreen_controls options should refer to the touch mode setting
and main menu buttons as it's done in the Android backend. The
virtual gamepad controller used the onscreen_controls string to
identify the option. Change the identifier string to
gamepad_controller so onscreen_controller can be used for the buttons
to be added to the iOS backend.
With the release of iOS 17 the fix for adjusting the position of
the virtual controller stopped working. On some devices with so
called safe areas, the action buttons could be placed outside the
screen.
Rework the fix to position the GCControllerView layer instead.
Calling setMouseCursor with a non-palette cursor no longer
clears the cursor palette, allowing a subsequent call with a
paletted cursor to re-use it. This fixes Trac defect #13895.
The approach taken was to just copy what the OpenGL
backend was doing in the same situation.
- composer unaligned pitch fix
- error() doesn't work while in OSystem_Atari c-tor
- when a crash occurs, restore at least the cursor
- fix a crash when "data" doesn't exist
- Developers will need to use --enable-dlc with configure if they want to integrate
the DLC downloader. The kFeatureDLC will determine if the target platform is supported
- USE_SCUMMVMDLC will be used specifically to compile curl based ScummVMCloud (USE_DLC
will be automatically enabled if ScummVMCloud is supported)