Commit Graph

2453 Commits

Author SHA1 Message Date
Admiral H. Curtiss c23562b7b5
Merge pull request #12695 from mitaclaw/core-global-system-4
Core::IsRunning: Avoid Global System Accessor
2024-05-04 05:15:35 +02:00
LillyJadeKatrin 42ca39c6fe Hide Achievement Dialog Header When Disabled
If achievements were disabled but a player token is in settings, prior to this change the Achievement Manager dialog would show a box with no player name and score zero, which is unnecessary.
2024-05-03 21:35:01 -04:00
Admiral H. Curtiss 5817be7bd3
Merge pull request #12747 from mitaclaw/qt-memory-leaks
DolphinQt: Properly Delete (Some) Widgets
2024-05-02 17:30:49 +02:00
LillyJadeKatrin ad969dfc0d Disabled Hardcore Mode when Achievements disabled
Bugfix for hardcore-disabled items being disabled when hardcore was true but achievement integration was false, which should mean hardcore is effectively disabled. Now everything checks the IsHardcoreModeActive method in AchievementManager which processes the setting AND the game state to determine if hardcore mode is actually active.
2024-05-02 04:44:52 -04:00
mitaclaw 0df401b164 Core::IsRunning: Avoid Global System Accessor 2024-05-01 08:54:17 -07:00
JMC47 b71fdef356
Merge pull request #12639 from LillyJadeKatrin/retroachievements-client
Refactor AchievementManager from rc_runtime to rc_client
2024-05-01 11:20:02 -04:00
LillyJadeKatrin d8ef3ee6c5 Add Spectator Mode to achievement settings
Spectator Mode is a new mode added by rc_client that allows for achievement and leaderboard functionality, but does not submit this data to the site, partially allowing for offline achievements. It effectively replaces the former settings for disabling achievements, leaderboards, and RP, which are now always active internally as long as the client is active.
2024-05-01 07:04:32 -04:00
LillyJadeKatrin fd0de1b01f Updated Unofficial and Encore settings to use rc_client
These settings now only are applied at game start and their tooltips have been updated to reflect this.
2024-05-01 07:04:32 -04:00
LillyJadeKatrin 0883aa114e Update hardcore toggle to use rc_client
The client can take care of itself and handle its own hardcore status when it toggles, so I can tell the settings widget to contact the manager directly to set it.
Also, gradually reorganizing the settings dialog over the next handful of commits.
2024-05-01 07:04:32 -04:00
LillyJadeKatrin 9a40ec06b5 Remove Achievements/Leaderboards/RP Enabled settings
The RetroAchievements client object now handles these three settings as a singular "spectator" mode that will be added in a future commit.
2024-05-01 07:04:32 -04:00
LillyJadeKatrin b05028da1f Added Change Media client functionality to AchievementMananger
The client can handle media changes natively so disabling can take place internally. This code uses the same external calls to load data, but will call either BeginLoad or BeginChangeMedia based on whether any media is already loaded.
Due to the client's handling of media changes (it simply disables hardcore if an unknown media is detected) the existing functionality for "disabling" the achievements is no longer necessary and can be deleted.
2024-05-01 07:04:32 -04:00
LillyJadeKatrin 878e6e847b Update Achievement Dialog Header to use rc_client
Two portions of this need updating.
Anything related to points and unlock counts and scoring uses game_summary now instead of the TallyScore method. Unfortunately this comes with the drawback that I cannot easily at this time access the number of points/unlocks from the other hardcore mode, so things like the second progress bar have been deleted.
Rich presence, which no longer needs to be stored, but can be calculated at request. As the AchievementHeader can now update just the Rich Presence, DoFrame can now simply call a header update with .rp=true and the current Rich Presence will be calculated immediately.
As the two items above are the last remaining things to use a number of the components in AchievementManager, this also deletes: Request V1 (V2 is renamed accordingly), ResponseType, PointSpread, TallyScore, UnlockStatus, and the RP generation and ping methods.
2024-05-01 07:04:32 -04:00
LillyJadeKatrin 4214c301ef Refactor AchievementsWindow::UpdateData to take a partial update parameter
UpdateData in AchievementsWindow now only updates the components being requested, massively improving the window's performance. The parameter is UpdatedItems in AchievementManager, which tracks which portions of the system have been updated for every update callback.
2024-05-01 07:04:32 -04:00
LillyJadeKatrin fa2210f80d Refactor leaderboard entry calls to use rc_client
Leaderboard entry calls are asyncronous and use a callback. Logic remains the same, but the callback populates the list that the UI grabs values from.
2024-05-01 06:43:20 -04:00
LillyJadeKatrin c57be0efca Refactor Leaderboard widget to allow partial updates
Similarly to the Progress widget (though without the separate object for each box, because each Leaderboard unit is just three text fields stacked vertically), AchievementLeaderboardWidget.UpdateData will now accept three options: destroy all and rebuild, update all, or update a set of rows.

As part of this, AchievementManager::GetLeaderboardsInfo has been refactored to GetLeaderboardInfo to return a single leaderboard for the ID passed in.
2024-05-01 06:43:20 -04:00
LillyJadeKatrin d2069e888d Refactored AchievementProgressWidget to maintain AchievementBox list
AchievementProgressWidget maintains in memory a map of AchievementBox pointers so that UpdateData can operate on them individually. UpdateData is overhauled for three options: UpdateData(true) will destroy the entire list and re-create it from scratch as before, to be used if the game or player changes/closes/logs out. UpdateData(false) will loop through the map and call UpdateData on every achievement box, to be used for certain settings changes such as enabling badges or disabling hardcore mode. UpdateData(set<IDs>) will call UpdateData on only the IDs in the set, to be used when achievements are unlocked.
2024-05-01 06:43:20 -04:00
LillyJadeKatrin 3793d723b9 Created AchievementBox Qt object
AchievementBox is an extension of QGroupBox that contains the data for a single achievement, initialized with the achievement data and able to reference AchievementManager to update itself.
2024-05-01 06:43:20 -04:00
LillyJadeKatrin c5bb1c4e68 Retooled achievement badge fetch process
This change was primarily made to refactor the badge fetching to use the client instead of the runtime, but in the process I also refactored the code to cut down on complexity and duplication. Now the FetchBadge method is passed a function that generates the badge name; this is used to ensure that once the badge is loaded that it is still the desired badge to avoid race conditions.
2024-05-01 06:43:19 -04:00
LillyJadeKatrin 7b835a20ca Updated GetGameDisplayName to use rc_client 2024-05-01 06:43:19 -04:00
LillyJadeKatrin 486a9d2318 Refactored Achievement Mananger to load games through rc_client
HashGame has become LoadGame, similar structure with the file loaders but using the client instead. LoadGameCallback has been created to handle the results. The old LoadGameSync has been deleted as have
several hash and load methods that it called.
2024-05-01 06:43:19 -04:00
LillyJadeKatrin 355b892621 Get display name and score from client
Delete m_display_name and m_player_score fields and retrieve those values directly from the client's user information.
2024-05-01 06:43:18 -04:00
LillyJadeKatrin 3bf8b5fb90 Refactored Achievement Manager Login to use rc_client
LoginCallback was created to handle the results of the asynchronous client login calls; VerifyCredentials was deleted as no longer necessary.
2024-05-01 06:43:18 -04:00
LillyJadeKatrin 7b3fac18cd Remove synchronous achievement login
Deletes AchievementManager::Login, renames LoginAsync to Login, and replaces the one synchronous call in the AchievementSettingsWidget with the async call. There is a minor usability regression in that the UI currently does not notify the user when a login has failed; this will be addressed in a later change (possibly in a different PR).
2024-05-01 06:43:18 -04:00
mitaclaw 0397339ab1 DolphinQt: Properly Delete (Some) Widgets
This is not every memory leak, just the ones that were obvious.
2024-04-30 11:17:28 -07:00
JMC47 2b261b9306
Merge pull request #12743 from Filoppi/remove-round-corners-on-game-window
Remove rounded corners on emulation render window
2024-04-30 12:30:03 -04:00
Filoppi 91067044f1 Remove rounded corners on emulation render window
On Windows 11, when playing windowed in a separate window/widget from the main emulator window, we don't want the window to have rounded corners, as it prevents the corner pixels from being visible
2024-04-28 12:41:39 +03:00
Filoppi 3815819136 Qt: fix 13524 - output resampling mode not loading correctly from ini 2024-04-27 22:11:45 +03:00
JosJuice a17331d568 DolphinQt: Don't ask user about creating Skylanders folder
We don't have prompts like this for any other path handled by Dolphin.
If the folder doesn't exist, let's just create it.
2024-04-21 09:28:01 +02:00
Admiral H. Curtiss d3cf35019c
Merge pull request #12726 from JosJuice/i18n-2024-04-20
i18n: Add comments and improve source strings
2024-04-20 23:34:32 +02:00
JosJuice 83b280d903 i18n: Add comments and improve source strings 2024-04-20 23:02:46 +02:00
Tilka 20665ebce7
Merge pull request #12710 from jordan-woyak/mouse-pointing-disable-relative
DolphinQt/Mapping: Disable relative input when "Mouse Controlled Pointing" button is pressed.
2024-04-20 14:14:03 +01:00
Admiral H. Curtiss 2252635070
Merge pull request #12702 from Dentomologist/gamelist_show_disc1_for_two_disc_games
GameList: Show (Disc 1) for first disc of two-disc games
2024-04-20 05:03:38 +02:00
Jordan Woyak df7dd5d36a Config: Expose GFX_OVERLAY_PROJ_STATS setting in UI. 2024-04-18 14:45:28 -05:00
Admiral H. Curtiss 1805f6e381
Merge pull request #12660 from jordan-woyak/hide-makepkg
Hide branch name from title bar when there are no commits ahead of master.
2024-04-18 17:21:24 +02:00
Jordan Woyak 31dc3477ad DolphinQt/Mapping: Disable relative input when "Mouse Controlled Pointing" button is pressed. 2024-04-15 14:52:26 -05:00
Dentomologist 37b89d5b71 GameList: Show (Disc 1) for first disc of two-disc games
Append disc label to the first disc of two-disc games too, rather than
only labelling the second disc.
2024-04-14 13:55:18 -07:00
mitaclaw 672be6a8cf PPCSymbolDB: GetDescription by std::string_view
Should save a lot of deep copies.
2024-04-13 00:19:01 -07:00
Admiral H. Curtiss b3939052b4
Merge pull request #12436 from Filoppi/frame-dump-raw-internal-resolution
Frame dump at raw internal resolution
2024-04-13 03:39:37 +02:00
Admiral H. Curtiss d58c998d6d
Merge pull request #12696 from mitaclaw/verify-widget-core-state-slot
VerifyWidget: Listen for Core::State OnEmulationStateChanged
2024-04-13 01:39:32 +02:00
Admiral H. Curtiss 0c1a76398b
Merge pull request #12691 from mitaclaw/jit-profiling-restoration
JitCache: Software Profiling Restoration
2024-04-13 01:35:25 +02:00
Jordan Woyak 9321318cb6 DolphinQt: Ensure controller settings show the game-controller indicator while expression editing. 2024-04-12 15:54:18 -05:00
Tilka 771858b182
Merge pull request #12701 from Tilka/usbwait
Qt: trigger first USB device scan without a timer
2024-04-12 14:25:45 +01:00
Tillmann Karras 99a8849125 Qt: trigger first USB device scan without a timer
Currently the dialog makes you wait one second before it shows anything.
Instead, trigger the first scan manually.
2024-04-11 16:48:10 +02:00
mitaclaw bc7b11517f MenuBar: Optimize SearchInstruction 2024-04-10 17:00:45 -07:00
mitaclaw 6dad5cee65 DolphinQt: Access Software JIT Profiling 2024-04-09 13:43:32 -07:00
mitaclaw fe8f836668 VerifyWidget: Listen for Core::State OnEmulationStateChanged 2024-04-09 12:13:02 -07:00
mitaclaw eb92d6f0a8 Core::GetState: Avoid Global System Accessor 2024-04-08 16:23:23 -07:00
Filoppi 72db62e178 Video: split frame dumping settings into 3 resolution dumping modes
also polish aspect ratio related code for clarity
2024-04-08 22:54:45 +03:00
Filoppi d6230bbad8 Video: Change the frame dumper to actually use the raw emulation output resolution, avoiding any scaling if possible.
This should make comparisons much more reliable as pixels wouldn't be smushed together or stretched.
2024-04-03 13:32:01 +03:00
Dentomologist ac4fd2297f CheatsManager: Allow making the window smaller
Move CheatManager's child widgets into scroll areas to allow making the
window smaller than the default.

In CheatSearchWidget, enable word wrapping for the label describing the
address space and search type to help it fit better inside a narrower
window.
2024-03-31 13:17:56 -07:00