1
0
Fork 0
mirror of synced 2024-07-03 05:31:23 +12:00
Commit graph

514 commits

Author SHA1 Message Date
loathingKernel 4a96224dd3
GameInfo: Enable Import Game button, redirects to Import Game tab 2023-05-03 17:27:36 +03:00
loathingKernel 1c6a05c3f1
Refactor: Import ImageSize from widgets or directly from models 2023-05-03 17:27:36 +03:00
lennard 672bc814ba Fix import game 2023-05-03 12:32:12 +02:00
lennard ec6f24e3f8 Add tag to hide games from library 2023-05-03 12:32:12 +02:00
Dummerle 3f17a69e65
Merge pull request #272 from loathingKernel/fixups
Show environment variables from the "default" section in per-game settings.
2023-04-07 19:37:56 +02:00
lennard 9233c28e5b Update loading widget 2023-04-05 13:09:34 +02:00
lennard 37a8a052c8 Add loading widget to cloud saves 2023-04-05 13:09:34 +02:00
loathingKernel 849c98bee5
ProgressLabel: Use a centering procedure based on events
Previously the `setGeometry()` method was called explicitly. In this
procedure the self-centering widget installs an `eventFilter` on its
parent to react to `Resize` events of the parent.

This breaks centering on the list widgets a bit, pending an investigation
2023-04-04 13:34:33 +03:00
loathingKernel dcb6bc7b98
GamesTab: Since the layouting is fixed, add a nice margin at the bottom 2023-04-01 00:55:42 +03:00
loathingKernel 42b9f581f6
GameInfo: Use QFormLayout instead of QGridLayout for the information
Also partition the space to left and right layouts, left layout being the
image and the space below it (pending future usage), and right the
information.
2023-03-30 12:50:42 +03:00
loathingKernel afea6c54f6
GameSettings: Ignore override checks if the game is not installed 2023-03-29 14:01:57 +03:00
lennard 554d3557d3
fix auto sync saves 2023-03-19 20:23:44 +01:00
loathingKernel c3231d9e17
Use object instead of ctypes.c_uint64 for signals that carry large ints 2023-03-16 14:04:12 +02:00
loathingKernel ae74d3438b
GameSettings: Use a PathEdit for override_exe
In the process convert to Ui membership instead of dual
sub-classing for those forms
2023-03-16 12:41:50 +02:00
loathingKernel 44590bb92b
Code cleanup
CloudSaves: don't save `save_path` in case it hasn't changed
IconGameWidget/ListGameWidget: Remove dead code
RareCore: add string translations
utils/paths: Use `AppDataLocation` instead of deprecated `DataLocation`
2023-03-16 12:38:33 +02:00
loathingKernel 837b391350
PathEdit: Allow for the completer's root path to be set at runtime.
This allows to complete from relative paths, such use exe override

Fix constructor argument names to follow Qt's types.
Set the same filters as the dialog for the completer.
Use the completer's icon provider for the dialog.

Force Rare to use Qt's file dialog instead of the native one.
2023-03-15 22:49:18 +02:00
Stelios Tsampas dc20293abb IndicatorLineEdit: Wrap edit_func inside the QRunnable 2023-03-15 18:25:32 +02:00
Stelios Tsampas 07c64b8b9b GameInfo: Fix enablement check 2023-03-15 18:07:20 +02:00
loathingKernel c6a9460044
GameInfo: Fix missin format() argument 2023-03-13 13:18:12 +02:00
loathingKernel fee1f34451
ImportGroup: Rename button slot 2023-03-13 12:29:33 +02:00
loathingKernel a7b85500f2
RareGame: Clean and export .egstore after updating igame
When importing a game, the first thing being checked for import information
is `<install_dir>/.egstore`. Due to erroneous handling, that directory can
contain multiples of `.mancpn` and `.manifest` files. This could lead to
importing an older version as legendary expects only one pair of these
files to exist in that directory.

The `.egstore` folder is normally updated/created as part of synchronizing
with EGL. To aid with importing games in the future, we always export this
data for Rare to be able to import games between different OSes
2023-03-13 12:29:04 +02:00
loathingKernel a17ffe0426
CloudSaves: Set the labels to "None" even if save_path is not set 2023-03-13 01:11:15 +02:00
loathingKernel e263523a76
ImportGroup: Constrain QStackedWidget from resizing when changing contents
Fix its size to the import button's size.
2023-03-13 00:58:16 +02:00
loathingKernel 8a15691672
CloudSaves: Set age labels to "None" if game doesn't support cloud saves 2023-03-12 14:15:43 +02:00
Stelios Tsampas b2f19852d0 CloudSaves: Allow path on Windows to not exist
Unlike Linux, we can be sure that the path is correct and it will be
created when the user downloads the saves.
2023-03-11 12:51:55 +02:00
loathingKernel 993b9fca17
CloudSaves: Better handling of changing between games and some UI cleanup 2023-03-11 02:05:41 +02:00
lennard 4ec1f39109
Update cloud widget, when state changed
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-08 21:22:38 +02:00
lennard 4b85ed8223
Cache all saves in a dict in api_results
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-08 19:15:32 +02:00
lennard 70960c73c4
Some ui improvements for cloud saves
- Show text on widget if save is not up-to-date
- Fix text in game info -> cloud saves

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-08 18:54:27 +02:00
lennard 189167f4f7
Add upload and download function to RareGame
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-08 18:34:26 +02:00
lennard a66600efa3
Move cloud save ui to a new tab in game_info
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-08 17:46:26 +02:00
loathingKernel 92346e11d0
OriginWineWorker: Execute during launch and properly resolve paths for Wine 2023-03-07 23:43:42 +02:00
lennard d399382afd
Fix origin stuff on windows
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:23 +02:00
lennard efc07e4645
Add install size for origin games and move it to thread on windows
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:23 +02:00
lennard 32de2c21a1
Move registry reader for origin games to a worker
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:22 +02:00
lennard eec3dfeb1e
Fix some rebase errors
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:22 +02:00
lennard 1ac1fd89f8
Show install path for origin games in game info
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:22 +02:00
loathingKernel 91a7247573
RareCore: Remove Win32Worker and MacOSWorker
They weren't required as the asset information are already fetched in
`GamesWorker`. They were a remnants of `ApiResults`.
2023-03-07 17:11:21 +02:00
loathingKernel 5748d0e6ee
RareCore: Manage initialization in RareCore instead of LaunchDialog
This is the last change of the `backend_refactor` branch. This makes
`RareCore` the centerpiece of Rare by moving initialization before the UI
is brought up. RareCore is now in control of creating and querying `RareGame`
objects, re-introducing the ability (incomplete) to refresh the games library.
As a result, ApiResults has been removed.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:21 +02:00
loathingKernel e55c40448c
Misc: rename get_size to format_size 2023-03-06 00:39:23 +02:00
loathingKernel ca9bf7c1e8 StaticStylesheet: Share common properties by setting common object names 2023-03-03 16:51:26 +02:00
loathingKernel 372b276157 [Icon/List]Widget: Disable focus on buttons
When the button gets clicked on, it receives keyboard focus. Disabling the button
afterwards leads to `focusNextChild` getting called. This makes the scrollarea
trying to ensure that `nextChild` is visible, essentially scrolling to a random widget
2023-03-02 19:57:31 +02:00
loathingKernel 1dd8856a29 Resources: Add static stylesheet for widgets that need special handling irregardless of theme
The static stylesheet properties are always applied. If there is a theme
stylesheet to be applied, they are appended in the end of the theme
stylesheet.

This removes stylesheet properties from the library widgets, some special
buttons and the queue worker labels.

To update the static stylesheet first edit `rare/resources/static_css/stylesheet.py`
and then execute it as a script.
2023-03-02 15:36:45 +02:00
loathingKernel 46664f3577 Fix a few minor errors 2023-03-02 01:05:53 +02:00
loathingKernel 0e161eb4d2 Use Worker base class for runnables in legendary settings and ubisoft widget.
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-27 23:49:44 +02:00
loathingKernel 5ba368a5bf SideTabContainer: Use a signal to update the title instead of monkeypatching setTitle method into the widget
Widgets that need to implement a title should be of a dual subclass
of any `QWidget` subclass and the `SideTabContents` class which provides
the signal.
2023-02-21 15:27:52 +02:00
loathingKernel a3d09ae288 Code cleanup: Use pass instead of ellipsis (...) for abstractmethods
Fix a few other issues pointed out by MultisampledNight

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-20 15:31:04 +02:00
loathingKernel 3e827f4ece ElideLabel: Enable word-wrapping for elided labels.
Word wrapping allows ElideLabel to resize first inside flexible sized
areas such as the contents widget of a scrollarea. This allows the contents
widget to properly resize itself to avoid horizontal scrolling.

Word-wrapping also enables the widget to resize vertically. To avoid that
ElideLabel is set to a fixed height based on font metrics. An overloaded
method `setFixedHeight` has been added to disable it when desired.

EglSyncGroup: Replace estimated path label with a ElideLabel because
the displayed message was expanding the scrollarea.
2023-02-20 14:26:14 +02:00
Stelios Tsampas e748468078
Update rare/components/tabs/games/game_info/move_game.py
Co-authored-by: multisn8 <contact@multisamplednight.com>
2023-02-20 11:31:03 +02:00
Stelios Tsampas cda4668486
Update rare/components/tabs/games/game_widgets/game_widget.py
Co-authored-by: multisn8 <contact@multisamplednight.com>
2023-02-20 11:28:53 +02:00
loathingKernel dd6df40e40 ExtraWidgets: Remove SideTab widgets and update imports 2023-02-18 17:33:25 +02:00
loathingKernel 5938835249 ExtraWidgets: Remove IndicatorLineEdit and PathEdit and update imports 2023-02-18 17:29:41 +02:00
loathingKernel 97def45a7e Cleanup: Remove some unused imports 2023-02-18 17:27:18 +02:00
loathingKernel ecc1bd8d5c IndicatorLineEdit: Run edit callback function asynchronously
Execute the edit callback function in a thread. By executing it in a thread
we don't have to wait for longer validation procedures to finish to
continue updating the UI. This is most notable in the MoveGamePopUp
which is heavy on disk IO.

Because we cannot use special text formatting in a thread, the
indicator messages have been reworked while also becoming extensible.

A dictionary of extended reasons can be specified through the
`IndicatorLineEdit.extend_reasons()` method.

The dictionary has to follow the following format
```
python
{
	MyIndicatorReasons.REASON: self.tr("Reason message")
	MyIndicatorReasons.OTHER_REASON: self.tr("Other reason message")
}
```

In the above example `MyIndicatorReasons` is a subclass of `IndicatorReasons`
which should be specified as follows

```
python
MyIndicatorReasons(IndicatorReasons):
	REASON = auto()
	OTHER_REASON = auto()
```
2023-02-18 14:37:37 +02:00
loathingKernel 7e4ded70b5 MoveGamePopUp: Don't translate or do any text formatting in path_edit callback function 2023-02-17 13:29:59 +02:00
loathingKernel 922b1472dd IconWidget: Fix typo in install_btn css selector 2023-02-17 10:49:34 +02:00
loathingKernel d8c31a05c2 GamesTab: Remove timing debug message 2023-02-16 16:22:31 +02:00
loathingKernel a438eb764b MoveGamePopUp: Don't refresh indicator on widget.update 2023-02-16 10:46:47 +02:00
loathingKernel e34800cfd3 LibraryWidgets: Remove unused code and use multiline f-strings for css text 2023-02-15 20:40:20 +02:00
loathingKernel 0bd7af3d77 MoveGamePopUp: Use ElideLabel for the warning 2023-02-15 19:58:28 +02:00
loathingKernel efcbea91cf MoveGamePopUp: Make the warning label always visible 2023-02-15 19:48:48 +02:00
loathingKernel 6c0663771c GameInfo: Make widgets react to changes from RareGame's widget.update signal
Note: the `__update_widget()` method, while it doesn't have any visible delay
has the potential for improvement. I didn't do it because it felt like
premature optimization.

MoveGamePopUp: update it to use RareGame and it's signals

RareGame: Add `install_path` attribute and change `needs_verification` setter
Now both setters will update the local `igame` attribute and save it too.

MoveWorker: Update it to use RareGame.
Other changes include moving "same-drive" moving into the worker and using
`os.path` methods instead of `PathLib`

SteamGrades: Remove worker, it is implemented in RareGame now.
2023-02-15 16:59:33 +02:00
loathingKernel 71aa440e0b GameWidget: Use __slots__ to satisfy forward ui declaration
This way `ui` won't get any typing but this is internal and we can
take care of it until a better method is found to satisfy both.
2023-02-08 15:14:50 +02:00
loathingKernel 1721677e33 GameWidget: Implement reactive and interactive labels
The `status_label` displays what is currently going on with the game.
It reflects the current operation running on it or if it requires special
attention (update, needs verification etc)

The `tooltip_label` displays hover information such as what happens
if a part of the widget is clicked or in the case of the launch button if
the game can run (without version check, offline etc)

The context menu on the widgets will be updated and populated according
to the installation state of the game. Since the context menu was revised
the shortcut creation code was revised too to make it more compact.

the `create_desktop_link` and `get_rare_executable` functions are moved
from `rare.utils.misc` to `rare.utils.paths` to avoid cyclical imports and
better grouping. Two functions are added, `desktop_link_path` to uniformly
calculate the path of the shortcut and `desktop_links_supported` which
checks if Rare supports creating shortcuts on the current platform.
`desktop_links_supported` should be used as safeguard before `desktop_link_path`.

Desktop links are currently untested on Windows but if `shortcut.Description`
works as expected, it should be good to go.
2023-02-07 13:41:59 +02:00
loathingKernel 34a13ea3b2 ApiResults: Mirror the way RareCore from refactor_backend handles non asset items
`LegendaryCore.get_non_asset_library_items()` returns the same tuple
for `game_list, dlc_dict` as for regular games with assets, so
keep the result for API completeness, since `RareGame` can handle those
games properly.
2023-02-07 13:04:33 +02:00
loathingKernel c83ee69914 GamesTab: Populate RareGame.saves at creation based on ApiResults
Remove unused attributes and clean layout code.
2023-02-06 09:45:30 +02:00
loathingKernel 15b80ce72f GamesTab: Move installed and uninstalled signal connection inside LibraryController 2023-02-05 19:14:51 +02:00
loathingKernel 6b3a841378 Refine QueueWorker and implement worker_info for VerifyWorker and MoveWorker 2023-02-04 17:38:07 +02:00
loathingKernel 6800b7e9ab Workers: Implement wrapper QueueWorker class prototype for queueable workers
RareCore: Impelement base worker queue
2023-02-04 17:38:07 +02:00
loathingKernel 28e68cad97 MoveWorker: Move worker into rare/shared/workers 2023-02-04 17:38:07 +02:00
loathingKernel e7a47a48e1 Add typing to the custom layouts and fix stacked widet page naming 2023-02-04 17:38:07 +02:00
loathingKernel a8bc418e42 Reference tabs by their returned indices instead of hardcoded numbers 2023-02-04 17:38:07 +02:00
loathingKernel 96c833be64 GameInfo: Fix list to boolean conversion
SideTabBar: Add padding option
2023-02-04 17:38:07 +02:00
loathingKernel 406c018f29 GameInfo: Enable DLC tab only when the game is installed 2023-02-04 17:38:07 +02:00
loathingKernel 90021e34f2 RareGame: Add enqueue and dequeue signals
They are used to insert and remove updates from downloads when
the installation of a game changes through `RareGame.set_installed`.
They piggy-back the signals with the same names in `GlobalSignals`

When importing a game from EGL, also check
2023-02-04 17:38:07 +02:00
loathingKernel 0830c17ee5 ImportGroup: Add progress reporting in the form 2023-02-04 17:38:07 +02:00
loathingKernel c219f347d1 ImportGroup: Fix missing text due to ElideLabel change 2023-02-04 17:38:07 +02:00
loathingKernel 304ad0388e GameDlc: Re-write the form to use a QToolBox instead of two separate QGroupBoxes.
By using a QToolBox, we can better utilize the available space for
long lists of DLCs. `GameDlcWidget` is now responsible for handling
installing and uninstalling the DLC based on RareGame's functionality.

Since `GameUtils` is not used for uninstalling any more, remove it the
arguments of `GameInfoTabs` completely.
2023-02-04 17:38:07 +02:00
loathingKernel cf5332004a Add name inference based on type in widget_object_name 2023-02-04 17:38:07 +02:00
loathingKernel 9e077f74ed Stylesheets: Refactor css widget selectors based on objectName()
The `objectName()` of onstall and uninstall buttons should be set
to `InstallButton` and `UninstallButton` respectively for them to
pick up their special CSS properties.

Make QToolBox tab text bold

Clean-up deprecated widget object names in the CSS
2023-02-04 17:38:07 +02:00
loathingKernel 65c56bd366 ImportGroup: Handle each imported game as soon as it ready
Emit and handle the each imported game with the progress signal.
The result signal still handles showing the summary of the
process to the user
2023-02-04 17:38:07 +02:00
loathingKernel 1959516b3f GameWidget: Toggle buttons on widget update
ElidedLabel: Use `sizeHint()` for width

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:07 +02:00
loathingKernel fc7e45a43a UninstallDialog: Implement it to work similarly to InstallDialog
Similarly to the installation procedure, when an uninstall is
requested, an `UninstallOptionsModel` is emitted by the `RareGame`.
`DownloadsTab` handles the signal and spawns the `UninstallDialog`.
After the `UninstallDialog` is closed, a worker thread handles
uninstalling the application to avoid UI lock-ups when a large
number of files is deleted.

Allows for uninstall actions to be spawned from anything having
access to the `RareGame` instance.

LaunchDialog: Don't check health on DLCs, they always will require
verification if they don't specify an executable.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:07 +02:00
loathingKernel b02483eb80 GameInfo: Refactor the move game stack to re-use the existing widgets
instead of adding them again to the layout. Move game should still
switch to RareGame, similar to the way it works for verifing.

Also add non-functional "Import Game" button
2023-02-04 17:38:07 +02:00
loathingKernel 915c41309d GameWidgets: Remove GameUtils from GameWidgets
Also remove attributes tracking the state of each application, those
are handled by `RareGame`

Temporarily disable save syncing related code, pending the move to
the game launcher process
2023-02-04 17:38:07 +02:00
loathingKernel 620e8f721c ImportGroup: Adjust for RareGame 2023-02-04 17:38:07 +02:00
loathingKernel 56876227dd GameInfo: Move uninstall_game from GameUtils to GameInfo
When `Uninstall` is used from the widgets, it will take the user to
the `GameInfo` page similar to how `Install` works.

`GameInfo` is not connected to the `RareGame` instance's `installed`
and `uninstalled` signals to refresh the contents of the page based
on the related functionality.
2023-02-04 17:38:07 +02:00
loathingKernel 4063195b4d DownloadsTab: Refactor downloads tab
When updates are queued, they are removed from the update's list. An exceptions is made
when the queued item comes from repairing (without updating), in which case the update is
disabled for the runtime.

A queued item can be either removed (if it is an update it will be added back to the
updates groups) or forced to be updated now. If a queued item is forced, the currently
running item will be added to the front of the queue. Downloads will be queued if
there is no active download but there is a queue already.

The download thread is now responsible for emitting the progress to `RareGame`

InstallDialog: Pass `RareGame` and `InstallOptionsModel` only as arguments.
The `update`, `repair` and `silent` arguments are already part of `InstallOptionsModel`
`RareGame` is used to query information about the game.

InstallInfoWorker: Pass only `InstallOptionsModel` as argument
Emit `InstallQueueItemModel` as result, to re-use the worker when queuing stopped games

RareGame: Query and store metadata property about entitlement grant date
RareGame: Add `RareEosOverlay` class that imitates `RareGame` to handle the overlay

LibraryWidgetController: Remove dead signal routing code, these signals are handled by `RareGame`
Directly parent library widgets instead of reparenting them

GameWidgets: Remove unused signals

EOSGroup: Set install location based on preferences and use EOSOverlayApp from legendary

GamesTab: Connect the `progress` signals of dlcs to the base game's signals
GamesTab: Remove dead code

GlobalSignals: Remove `ProgresSignals`

RareCore: Mangle internal signleton's names

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:07 +02:00
loathingKernel 8dd58dc5e9 EGLSync: Subclass EGLSyncListGroup and EGLSyncListItem
Subclass `EGLSyncListGroup` and `EGLSyncListItem` into import/export
specific classes. This way we don't have to specify the type of
operation at instatiation and improves code clarity and intention.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:07 +02:00
loathingKernel 0d4b75d399 GameProcess: Make it a persistent member of RareGame
The `GameProcess` class now acts as a persistent member of `RareGame`
that can be re-used for launching games. Its signals are handled and
repeated by `RareGame`.

Implements launching directly into `RareGame`

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 79bae4374d GameInfo: Transition to RareGame
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel c9b8774422 GameInfoTabs: Disable metadata tabs when --debug is not defined
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel db0724fba0 GameInfo: Use RareGame to keep the VerifyWorker running on a game and connect progress to the widget.
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 2923c09bad GamesTab: Also scroll to top when filter changes.
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel ab596139af RareCore: Add RareGames to a data structure in RareCore
This merges a few of the internal features of RareCore such us
RareGame filtering and thus game grouping based on attributes.

This is required to properly connect a single signal from RareCore to
the downloads tab for game installation. This also includes filtering
games based on updates and other attributes.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel b0c4fb4212 GameUtils: Adapt to use RareGame
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 5d209e1805 GameWidgets: Split status label to two
The original status_label is used to reflect the state of the game,
the tooltip_label is used to reflect the action of the current hovered
widget.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 9ca39d94ab GlobalSignals: Reorganize signals into groups
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 83df445de9 GlobalSignals: Fix signal names in EGLSyncGroup and ImportGroup
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 857b3a3cc0 WineResolver: Pass LegendaryCore at instantiation
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00