Commit graph

33 commits

Author SHA1 Message Date
Lars Sundström
a490768622 IOS7: Refactor touch event functions
Remove the deprecated events and their corresponding functions.
2023-10-11 06:28:03 +02:00
Lars Sundström
4dae507f14 IOS7: Add UIGestures for left and right mouse clicks
On a touch based device the touches made must be translated to
different mouse events. For example when a touch starts and is
moved that should translate to a mouse pointer movement. A quick
tap should be translated to a mouse button click while holding a
touch for a longer time without movement should be translated to
that the mouse button is kept pressed.

Add UIGestures to replace the current mouse button handling, all
done using the callback functions touchesBegan, touchesMoved and
touchesEnded.

A tap gesture with one finger is a left mouse click

A tap gesture with two fingers is a right mouse click

A long press gesture with one finger is holding the left mouse
button down until the press is released. This is accomplished by
sending an button down event when the gesture is recognized and
changes state to UIGestureRecognizerStateBegan.
A button up event is sent when the same gesture changes state to
UIGestureRecognizerStateEnded.

A long press with two fingers is as above but for the right mouse
button.

This commit adds the gestures and their actions. The current
mouse button handling is removed in upcomming commit.
2023-10-11 06:28:03 +02:00
Lars Sundström
324569f206 IOS7: Add on-screen controls as UI buttons
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.
2023-10-10 20:55:48 +02:00
Lars Sundström
8e9f54ad32 IOS7: Refactor touchpadModeEnabled to a TouchMode
Change the boolean parameter indicating if "touch mode" is enabled
or not to an enum which could contain several different touch modes.
2023-10-10 20:55:48 +02:00
Lars Sundström
2971029301 IOS7: Configure directional elements on virtual controller
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.
2023-10-10 20:55:48 +02:00
Lars Sundström
8576e9e1f3 IOS7: Register inputs based on capabilities
Instead of register input based on if hardware is connected or not
register input based on backend capabilities.
Mouse support is default supported through touch events on screen
(iOS) or touch on controller (Apple TV), and through connected
mouse hardwares. Gamepad controllers are supported from iOS 14 and
later.

Register mouse and gamepad input based on above capabilities to be
able to map actions to buttons on these input devices.

Keyboard support is to be added but not in this commit.

Remove the "isConnected" methods for each input and change the same
method for game controllers to a "isSupported" function to deal
with the iOS version support.

Remove the sending of the EVENT_INPUT_CHANGED event due to the
above reasons. The overide of the isConnected property function is
also removed due to this reason. It caused problems that key
mappings were reset on connections/disconnections.
2023-08-20 21:38:52 +01:00
Lars Sundström
147d41b360 IOS7: Add screen orientation settings to backend menu tab
Add options to let the user configure the screen orientation when
in games and in launcher. The option can be set per game as well
to allow for some games to start in landscape mode while others
in landscape mode.

This commit implements the options in the backend menu tab. The
code is very much similar as the one implemented in the Android
backend.
2023-07-08 18:49:54 +02:00
Lars Sundström
fb4f7d6de2 IOS7: Remove old IOS7 graphic handling
Delete the old graphic handling in the IOS7 backend which is not
used anymore after implementing iOSGraphicsManager.

The Accelerate framework is not used anymore. The OpenGLGraphics
manager handles the different color formats.
2023-07-03 21:50:32 +02:00
Lars Sundström
d36074773b IOS7: Add internal event for signalling screen changes
When the screen dimension changes, e.g. on rotation of the device,
the graphic manager has to be informed of the new dimension to be
able to resize the surfaces.

To quickly redraw the entire screen, Common::EVENT_SCREEN_CHANGED
event is passed to the event handler.
2023-07-03 21:50:32 +02:00
Lars Sundström
568b06940e IOS7: Add mouse input events
Add input events that can be used by mouse devices, e.g. mices and
touchpads. This event sends the raw input actions and doesn't care
about different controller modes such as click-and-drag.

Make the mouse controller utilize the new mouse input events.
2023-05-15 12:43:39 +02:00
Lars Sundström
5a0eccf337 IOS7: Rename mouse events to touch events
The current mouse events are handling events created from both touch
and mouse input. The events have lots of logic to deal with gestures
and different modes (touchpad mode, click-and-drag etc) which are not
applicable for hardware inputs.

Rename the current "mouse events" to "touch events" to clarify which
input that triggered an event. As this is the first commit in multi-
commit change, the mouse input need to use the "touch events" until
a new "mouse event" is implemented.
2023-05-15 12:43:39 +02:00
Thierry Crozat
a36dba4db9 IOS7: Cleanup code to access Document and app bundle paths 2023-04-27 01:24:30 +01:00
Le Philousophe
87bad2cc7d COMMON: Allow games to use overlay for something else than GUI
This can be used for subtitles without changing the mouse coordinates.
2022-11-12 19:12:05 +01:00
Lars Sundström
e7759ac0ef IOS7: Implement getHardwareInputSet to get connected devices
Trigger EVENT_INPUT_CHANGED when devices connects to make the ScummVM
engine update the hardware input set.
2022-08-08 21:08:56 +01:00
Lars Sundström
f18305e715 IOS7: Add support for Joystick actions in GameController
Joystick actions are suitable for joysticks and gamepads where the
movements are updated by a controller stick. On gamepads that's usually
a thumbstick.

Add joystick events which can be triggered by each implemented
controller that should utilize the ScummVM Joystick events.
2022-08-08 21:08:56 +01:00
Le Philousophe
4ab044a254 OPENGL: Merge both OpenGL contexts 2022-06-26 18:32:10 +02:00
Paweł Kołodziejski
ee11c85f85 IOS: Added support for GLAD 2022-03-06 21:44:19 +01:00
Eugene Sandulenko
abea37c9bb
ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
Thierry Crozat
8ef63e0e0d IOS7: Add support for upside down portrait orientation 2021-09-29 20:30:16 +01:00
Cameron Cawley
a38103fb23 IOS7: Remove scaler code 2021-03-15 16:48:40 +02:00
Thierry Crozat
c50ffd74c6 IOS7: Properly restore state when the process has been terminated 2020-09-13 00:21:36 +01:00
Thierry Crozat
28e9910666 IOS7: Implement game state save/restore when switching tasks
This only works if the running engines can save the game at the
time when ScummVM goes to the background.
This should partially fix bug #7871.
2020-09-13 00:21:35 +01:00
sluicebox
b8390fa161 GRAPHICS: Add interface for horizontal shake 2019-11-19 00:20:40 +01:00
Thierry Crozat
3ba9245138 IOS7: Add input accessory view to virtual keyboard
This adds buttons for some keys that are not present on the iOS
keyboard, such as the function and arrow keys, as well as a GMM
key.
2019-06-30 12:36:43 +01:00
D G Turner
442c578223 IOS7: Enable Port Specific Software Scalers.
This was disabled during the merge of the initial pull request, PR 630
as this "limits the port to 16bit color precision, i.e. preventing it
from coping with engines like Wintermute, and Sword25.".

The intent was to replace this with GLSL based scalers, and thus to
avoid switching around and confusing users this was disabled.

However, since the GLSL solution has not been implemented after 2 years,
and users are asking for this feature on IOS7, am enabling this for now.

This can always be replaced in future with a GLSL based solution if a
motivated developer provides a patch.
2018-11-21 08:11:48 +00:00
Vincent Bénony
8bc745fb55 IOS: Improve iOS 11 compatibility 2017-09-30 11:16:42 +02:00
Thierry Crozat
2882424306 IOS: Add support for filtering feature 2016-10-21 22:27:26 +01:00
Johannes Schickel
17a57443ae IOS7: Use standard include guard names. 2016-01-07 12:44:48 +01:00
Vincent Bénony
aa77c0c92d IOS: Disable scalers 2016-01-06 16:20:28 +01:00
Vincent Bénony
80afba232a IOS: Implements scalers 2016-01-06 16:17:37 +01:00
Vincent Bénony
14a0a3d032 IOS: Better resolution handling 2016-01-06 16:17:36 +01:00
Vincent Bénony
c813e5d87e IOS: Move declarations in the common header file 2016-01-06 16:17:35 +01:00
Vincent Bénony
699c350481 IOS: Renames iOS7 classes to avoid confusion 2016-01-06 16:17:34 +01:00
Renamed from backends/platform/ios7/iphone_common.h (Browse further)