Commit Graph

351 Commits

Author SHA1 Message Date
PabloG02
a634bca2d2 Initial implementation of save management 2023-05-02 13:39:07 +01:00
lynxnb
b7548e51cf Use AndroidX use extension function instead of Kotlin built-in one
The Kotlin built-in `use` extension function applies to `AutoCloseable` only, and throws an error if the object it's being called on is not an `AutoCloseable`. This causes `OnScreenView` to fail to inflate on SDK < 31 as it retrieved the current theme primary color with a `TypedArray`, which only implements `AutoCloseable` since SDK 31 (Android 12).
The AndroidX core library provides a `use` extension function that applies to `TypeArray` instead of `AutoCloseable` so the fix is just a simple import.
2023-05-02 12:27:57 +01:00
lynxnb
cce4b3f89a Add OSC recenter sticks option description 2023-05-02 12:27:57 +01:00
lynxnb
563c72afa9 Implement OSC customizable stick activation radius 2023-05-02 12:27:57 +01:00
lynxnb
d86b2ec3e9 Implement OSC stick regions
Stick regions extend the activation area of the sticks to rectangles covering the corresponding half of the screen.
E.g. for the left stick: when any point of the left side of the screen is touched, the stick is repositioned there, and acts as if it was centered in the touched position. When the finger is lifter, the stick is hidden.
2023-05-02 12:27:57 +01:00
lynxnb
32f995165c Use 1.0 as the default OSC button scale value
The default value was previously 1.15.
2023-05-02 12:27:57 +01:00
lynxnb
821cdb8d72 Draw a circle indicator on OSC buttons with toggle mode enabled 2023-05-02 12:27:57 +01:00
lynxnb
7cf45b11b0 Vibrate on OSC roll-over button presses too 2023-05-02 12:27:57 +01:00
lynxnb
655ca8f89b Ignore OSC roll-over events if the button is already pressed 2023-05-02 12:27:57 +01:00
lynxnb
560fcd9442 Implement toggle mode for OSC buttons
When toggle mode is enabled, the button will toggle between the `Pressed` and `Released` state when it's pressed.

Without toggle mode:
ACTION_DOWN -> Pressed
ACTION_UP -> Released
ACTION_DOWN -> Pressed
ACTION_UP -> Released

With toggle mode:
ACTION_DOWN -> Pressed
ACTION_UP -> No event
ACTION_DOWN -> No event
ACTION_UP -> Released
2023-05-02 12:27:57 +01:00
lynxnb
78252fbcbd Show current input values in OnScreenEditActivity
This was made primarily for debugging on-screen controls, but it might be useful to users too.
2023-05-02 12:27:57 +01:00
lynxnb
69fb15ffc9 Improve separation between OSCEditActivity and OSCView
The activity shouldn't access the edit button directly, but should only access data available through the public interface.
2023-05-02 12:27:57 +01:00
lynxnb
7e3d3bd281 Draw a box around disabled OSC buttons in edit mode
The box is also drawn if the alpha is configured too low (<5%).
2023-05-02 12:27:57 +01:00
lynxnb
659e090d38 Enable OSC per-button text and color selection 2023-05-02 12:27:57 +01:00
lynxnb
c7d213c3ea Make the OSC edit panel collapsible
The panel can now be closed to try out the buttons.
2023-05-02 12:27:57 +01:00
lynxnb
3f2fd7a653 Make some properties constant in OnScreenButton
They were initially made variable by mistake
2023-05-02 12:27:57 +01:00
lynxnb
37a2a2fbad Fix inconsistent OSC button movements when using the arrow buttons
A combination of factors caused inconsistent button movements when using the arrow buttons to move it, namely floating point approximation and the round down performed when snapping a button to the grid. Sometimes the layman solution is the best one: adding/subtracting one to the move amount depending on the direction ensures that the button always ends up on a grid line.
2023-05-02 12:27:57 +01:00
lynxnb
1d6b075d5c Draw a selection rectangle around the active button while editing 2023-05-02 12:27:57 +01:00
lynxnb
e91993698f Remove OSC EditMode enum
An enum isn't needed anymore, as there's no state to enumerate anymore.
2023-05-02 12:27:57 +01:00
lynxnb
2556b25ebf Fix OSC incorrect pressed alpha when low values are used
OSC would "light up" when the alpha value was low because of the value being coerced to an arbitrary range. Divide the alpha value by 3 instead.
2023-05-02 12:27:57 +01:00
lynxnb
d69c9f472f Make the OSC control panel draggable 2023-05-02 12:27:57 +01:00
lynxnb
d7e38e9556 Introduce a control panel to edit buttons instead of a fab bar
An unusual big commit, unfortunately needed because none of these changes would make sense nor work individual. A quick list of what have been done follows.
* Introduced a control panel to control buttons replacing the FAB bar
* `ConfigurableButton` and `OnScreenConfiguration` interfaces have been introduced to allow for easier proxying of actions when applying the same changes to all buttons
* Button resize logic has been stripped from the buttons in favor of the new sliders
* General cleanup and renaming of various methods to better reflect their functionality
2023-05-02 12:27:57 +01:00
lynxnb
49de8a8f38 Rework OSC action bar appearance
FABs are now placed on top of a sheet hanging from the top. Actions are now properly enumerated and don't rely on the icon resource ID anymore.
2023-05-02 12:27:57 +01:00
Abandoned Cart
fe4ccd1ee0 Suppress or resolve common warnings 2023-05-02 12:27:06 +01:00
Abandoned Cart
97694e639a Add a Parcelable helper to handle deprecation 2023-05-02 12:27:06 +01:00
Abandoned Cart
96c5b94429 Always resume emulator, even if running
Fixes skyline-emu/skyline#2305
2023-05-02 12:27:06 +01:00
lynxnb
24d4f5e3cd Improve the robustness of the ROMs auto-refresh feature 2023-04-27 19:14:14 +02:00
lynxnb
e6efaf26bc Don't scroll to the top of the game list on adapter changes 2023-04-27 00:31:14 +02:00
Abandoned Cart
178dbea801 Use the searching text to specify load state 2023-04-22 19:54:04 +01:00
Abandoned Cart
30aee55122 Suppress AppItem serialVersionUID warning 2023-04-22 19:54:04 +01:00
Abandoned Cart
56fd79ff46 Remove the DataItem wrapper on AppItem 2023-04-22 19:54:04 +01:00
Abandoned Cart
c8e0f71bb7 Remove RomFormat as an AppEntry key
There may be a time and place where knowing the format is necessary, but it is not in the list of games being presented to the end-user
2023-04-22 19:54:04 +01:00
Abandoned Cart
fe46213beb Remove "Group Games By Format" option 2023-04-22 19:54:04 +01:00
Abandoned Cart
0b453ca4ed Simplify placeholder for empty items 2023-04-22 19:54:04 +01:00
Abandoned Cart
b82452f8f8 Remove HeaderItem as a DataItem type 2023-04-22 19:54:04 +01:00
Dima
1841727c56 Remove header rom filter 2023-04-22 19:54:04 +01:00
lynxnb
816599749b Fix Android Studio OSC layout preview (again)
The layout preview/editor doesn't instantiate an Application instance, therefore accessing `displayMetrics` from the app context would lead to a crash, and the view being mocked in the preview.
Additionally a default grid value is defined for `AlignmentGridView` to avoid a crash because of an invalid iteration step in the drawing loop.
2023-04-02 18:16:10 +02:00
lynxnb
3cbbdeda33 Improve OSC default position of sticks and buttons 2023-04-02 18:16:10 +02:00
lynxnb
a799cb63f1 Add separate L3 and R3 buttons to OSC
As part of this commit, a `defaultEnabled` property was added to `OnScreenButton` to determine the default visibility of buttons. This is required because L3 and R3 should be hidden by default and only enabled by the user on demand.
Additionally, the buttons' mask values were added to `ButtonId` members, as adding entries in the middle of the class conflicted with the `ordinal` enum property, making it unfit to use for our purposes.
Finally, the `ControllerType` class was extended with an array of optional buttons. Optional buttons represent buttons that are allowed to be displayed on screen, but shouldn't be included in the controller mapping activity.
2023-04-02 18:16:10 +02:00
lynxnb
acdf4e6823 Introduce constants for default OSC config values 2023-04-02 18:16:10 +02:00
lynxnb
83bc93601f Use EFFECT_TICK instead of CLICK as OSC vibration effect 2023-04-02 18:16:10 +02:00
lynxnb
88e6fc9888 Implement OSC snap to grid functionality 2023-04-02 18:16:10 +02:00
lynxnb
88084016a1 Implement OSC per-button scale functionality 2023-04-02 18:16:10 +02:00
lynxnb
2794af6d06 OSC: delegate config reset to individual buttons 2023-04-02 18:16:10 +02:00
lynxnb
3fc09f0953 Add OnScreenButton properties' missing comments 2023-04-02 18:16:10 +02:00
lynxnb
81eb8fd231 Rework OSC edit mode handling for better extensibility
Edit mode configuration parameters are now shared between the view and the buttons in a small `OnScreenEditInfo` object, avoiding variable duplication about edit state. The `editingTouchHandler` has also been simplified to only lookup the button if one wasn't being edited already.
2023-04-02 18:16:10 +02:00
lynxnb
c4d0d02509 Simplify OnScreenConfiguration
`ControllerConfigurationDummy` was removed as it isn't needed anymore, and the remaining classes simplified.
2023-04-02 18:16:10 +02:00
lynxnb
17f45c0366 Retrieve the vibrator service outside of OSC View
Retrieving the vibrator service inside the view crashes the layout editor. Fix by retrieving it in the activity and passing it to the view.
2023-04-02 18:16:10 +02:00
kikimanjaro
0eed72664d Add automatic refreshing games list 2023-04-02 16:52:37 +02:00
PabloG02
ef5456f939 Hide Debug preferences from search on release builds and remove settings that don't support per-game configuration instead of hiding them 2023-03-25 22:54:27 +00:00