1
0
Fork 0
mirror of synced 2024-06-29 03:31:06 +12:00
Commit graph

956 commits

Author SHA1 Message Date
loathingKernel 69aca3851f InstallDialog: Update widget attribute name 2024-01-21 23:45:38 +02:00
loathingKernel fa9b49c019 SelectiveDialog: Keep the layout of the central widget 2024-01-21 23:45:28 +02:00
loathingKernel 5b36727076 Dialogs: Add subtitle label in ButtonDialog 2024-01-21 23:45:23 +02:00
loathingKernel 7b52dc204c Downloads: Update queue count when adding a download 2024-01-21 23:44:15 +02:00
loathingKernel 06e2c9b714 DebugSettings: Add button to test notifications 2024-01-19 17:17:48 +02:00
loathingKernel 4e6008a8f7 TrayIcon: Generic notifications
* Add a notification when starting a download too
2024-01-19 17:17:31 +02:00
loathingKernel 7aa64b385e Downloads: Move auto-update change to Rare's settings instead of the game's metadata
The setting doesn't have a switch in the GUI yet, but the settings
feels like a better place for it.
2024-01-19 15:07:22 +02:00
loathingKernel 3c01cfc0a8 EosOverlay: Fix a few remaining issues
* Don't create path when preparing overlay download, it fails on updates.
* Concatenate the overlay install path in InstallDialog instead of passing it as `base_path`
* Respect RareGame state in in the EOS overlay form
2024-01-19 14:54:09 +02:00
loathingKernel a605bddffa RareGame: Move sdl_name to RareGameBase
InstallDialog uses that property so RareEosOverlay should have it too.
Also calculate the base_path for the overlay case instead of passing it as
argument
2024-01-19 12:09:57 +02:00
loathingKernel 7ae06ff5d8 RareCore: Move entitlements request into an independent worker
Yes, we are back at this. Entitlements are important to have early
as Ubisoft redemption requires them, and they don't depend on anything
else.

* Move config helper initialization into RareCore to make it available
earlier.
2024-01-19 01:28:10 +02:00
loathingKernel 89486f882e EOSGroup: Add the option to select which overlay installation to enable 2024-01-19 00:57:16 +02:00
loathingKernel 3c43da1594 RareCore: Add options to exclude non-asset games and entitlements from startup
* Add options in settings to not request non-asset games and entitlements.

This greatly improves startup time but reduces functionality a bit. Both
options are disabled by default.

* Remove the old options to exclude Win32 and Mac games as they were no longer relevant.

* Add a performance context manager to log execution time when used.

* Fixed an issue with UbisoftGroup where multiple threads would spawn.
2024-01-19 00:57:16 +02:00
loathingKernel a246f4ee16 EosGroup: Remake the UI and integrate with Rare's facilities
* Uninstalling the Overlay now goes through the same procedure as
uninstalling any other game.

* The available prefixes are now listed instead of hiding them inside
a combo box.

* Each listing works indepedently to enable/disable the Overlay for the prefix
2024-01-19 00:57:16 +02:00
loathingKernel 971c31e8f4 SelectiveWidget: Create specialized widget for selecting optional downloads
Because there are two dialogs for editing optional downloads, refactor
the separate implementations to select them into a common reusable widget
and use it in SelectiveDialog and InstallDialog.
2024-01-18 16:44:47 +02:00
loathingKernel 0fb1526d67 MoveDialog: Refactor MovePopup into a dialog using ActionDialog as base 2024-01-02 23:11:47 +02:00
loathingKernel d3ec79378e UninstallDialog: Refactor to use ButtonDialog as base 2024-01-02 22:31:25 +02:00
loathingKernel 339fec2bca CloudSaves: don't error if the saves directory already exists 2024-01-02 18:04:08 +02:00
loathingKernel 80ac9296fc Rare: cherry-pick some sourcery suggestions 2024-01-02 17:57:02 +02:00
loathingKernel 89c1a4eaf4 Launcher: Refactor cloud sync dialog to use ButtonDialog base class 2024-01-02 17:38:51 +02:00
loathingKernel 534c45818a GameInfo: Update button description strings and icons 2024-01-02 15:34:35 +02:00
loathingKernel c7336ad04a InstallDialog: Use ActionDialog base class 2024-01-02 15:12:07 +02:00
loathingKernel fd22d831eb Rare: refactor timer names 2024-01-02 11:18:31 +02:00
loathingKernel 456050c91c RareException: Use quit() instead of exit() 2024-01-02 11:18:18 +02:00
loathingKernel 6e1a7cdbaf Merge branch 'sdl_dialog' into next 2023-12-31 18:44:41 +02:00
loathingKernel e467dc996c GameDlcWidget: Dynamically load DLC cover image on show 2023-12-31 17:59:11 +02:00
loathingKernel e421d02a4f Update SDL dialog 2023-12-26 00:05:11 +02:00
loathingKernel 62e19a8be2 VerifyGame: Present a dialog to select selective downloads in the game
supports them.
2023-12-25 23:56:37 +02:00
loathingKernel 600441a614 Rare: Import platform specific modules only on said platforms 2023-12-24 21:08:26 +02:00
loathingKernel 870aeea748 EOSGroup: Use UI membership instead of double inheritance 2023-12-24 21:08:26 +02:00
loathingKernel efe9031211 Proton: Add functions to find and integrate compatibilty tools and runtimes 2023-12-24 21:08:26 +02:00
loathingKernel 1f34ad4b13 ProtonSettings: Move proton search function into utils/proton.py 2023-12-24 21:08:26 +02:00
loathingKernel 616df235cd ListWidget: Use line variant for qta icon 2023-12-24 21:08:26 +02:00
loathingKernel 400625975d Dialogs: Re-implement Launch and Login dialogs on top of a few common super-classes
To keep dialogs in a common format and allow them to share the same
properties, three classes of dialogs have been implemented inheriting from
each other.

The classes are `BaseDialog` -> `ButtonDialog` -> `ActionDialog`

* Basedialog: is the basis of all dialogs and is responsible for
rejecting close requests from the window manager and the keyboard.
It also restricts access to `exec()` and `exec_()` because they are harmful.
It serves as the basis of Launch and Login dialogs

* ButtonDialog: is offering buttons for accepting or rejecting the presented
option. It implements its own buttons and exposes abstract methods to
implement handling in them. It restricts access to `close()` because these
dialogs should always product a result.
It is the basis of Uninstall, Selective dialogs.

* ActionDialog: in addition to the ButtonDialog, it offers an action buttom
with to validate the form or to make the dialog unable to close. It serves
as the basis of Install and Move dialogs.
2023-12-24 21:08:26 +02:00
loathingKernel 51904efa90
GameWidget: Request pixmap in paintEvent.
Requesting the pixmap in `paintEvent` only loads the
pixmap when the widget first becomes visible, making loading
the library smoother. Also avoid spawning multiple singleshot
QTimers and use QObject's internal timer, with CoarseTimer precision.
2023-12-23 13:46:12 +02:00
loathingKernel 6d3dd3784e
RareCore: Temporarily disable automatic egl sync and remove UI option.
Also set some more defaults for legendary because Rare lacks support for
them. Forced at startup.

* Set `disable_auto_crossover` to `false` because we don't support CX yet.
* Set `egl_sync` to `false` because issues.
2023-12-23 13:38:29 +02:00
loathingKernel b039f9e06c
LaunchDialog: allow legendary to check for updates in its own way 2023-12-19 11:46:13 +02:00
loathingKernel 85d29372d4
GameSettings: Hide proton settings on macOS 2023-12-17 19:34:37 +02:00
loathingKernel 32565b3a9c
HeadBar: Update some strings 2023-12-17 01:28:56 +02:00
loathingKernel dfa60aa99f
ImportGroup: Add platform selection when importing games.
If we are importing multiple games, default to importing the native platform
if the game supports it, otherwise fallback to the Windows platform
2023-12-17 01:20:07 +02:00
loathingKernel c9264c732e
HeadBar: Default to Mac games fitler on macOS 2023-12-16 21:57:09 +02:00
loathingKernel 1cf53e3b54
Library: Filter unreal engine entries expect for the dedicated option 2023-12-16 20:26:56 +02:00
loathingKernel 5f5e471169
RareGameBase: Add default_platform property
This property reports the default platform to use for a game based
on legendary's configuration and if they platform is available in the
game's assets.

Using that property we can make better choices on what platform to operate
on without user intervention. Currently we use it to infer the platform
in when installing, importing, and calculating game versions.
2023-12-16 14:02:53 +02:00
loathingKernel 0bd34af720
ImportGroup: calculate correct install dir when importing game 2023-12-16 01:28:37 +02:00
loathingKernel 6249e56849
InstallDialog: Oooooooof.gif
* Infer the displayed to reflect where the affected directory is
  If base_path is set outside of InstallDialog, display that.
  If the game is already installed, show the installation directory
  If neither of the above is true, use legendary's inference based on
  the default platform if the game supports it. Fallback to Windows.

* Disable irrelevant and potentially harmful options when the game is
  already installed, such as the installation path, the platform selection
  and creating a shortcut.

* Infer the correct platform based on the existing installation. If it
  is not installed, use the default platform if the game supports it and
  fallback to windows.

* Move the horrible lambda used to populate the error box when the
  platform was unsupported into a separate method.
2023-12-16 00:49:51 +02:00
loathingKernel db588ed4e2
Use legendary's installation directory inference 2023-12-16 00:40:15 +02:00
loathingKernel 6d5b60a56e
LegendarySettings: Add path edit for macOS specific mac_install_dir option
Used only when installing macOS games on macOS, in any other OS
the setting is set to the same value as `install_dir`
2023-12-15 23:28:49 +02:00
loathingKernel 392b4b7896
RareSettings: Always show information label in interface section 2023-12-15 23:23:32 +02:00
loathingKernel cada2ae985
ImportWorker: Use default platform when importing, fallback to Windows if there is no assets for the platform 2023-12-15 17:56:33 +02:00
loathingKernel 1677ea762c
FetchWorker: Fix issue with missing MacOS assets on MacOS
Using `LegendaryCore.get_game_and_dlc_list` with platform `Windows`
updated the assets only for the `Windows` builds of the games missing
`Win32` and `MacOS` assets on clean installs. This caused Rare to not
include MacOS install options on MacOS (duh!). This might also have been
the cause that users were unable to launch games, since they where only
offered the `Windows` build of the games (big duh!).

To fix this, fetch the assets for `Win32` and `MacOS` games before getting
the final list of games and dlcs based on the `Windows` platform.

In this regard, also re-use the existing options for getting metadata to
give the option to the user to include them when updating assets. Also add
an option to include Unreal engine assets which until now were fetched
unconditionally.

* Include Unreal: When the user option is `true` or debugging.
  Defaults to `false`
* Update Win32: When the user option is `true` or debugging.
  Defaults to `false`
* Update MacOS: Force on MacOS, when the option is `true` or debugging on
  other platforms. Defaults to `true` on MacOS and is disabled,
  `false` on others

Furthermore, respect legendary's `default_platform` config option and
set it in the config on new configurations. The new method in our
LegendaryCore monkey allows us to use that option in RareGame when doing
version checks on not installed games, and not defaulting to `Windows`.

Finally, set `install_platform_fallback` to false in a new config to
avoid unwanted side-effects.
2023-12-15 16:57:32 +02:00
loathingKernel 687218d29b
RareGame: Return values only from Game for app_name and app_title
With launchable DLCs we will need to replace the InstalledGame in the
DLC with the InstalledGame from the base game so depend these properties
solely on the Game attribute. Furthermore, since we do not need backwards
compatibility any more, remove the `title` property and rename its uses
to use `app_title`
2023-12-14 23:08:29 +02:00