Commit Graph

12 Commits

Author SHA1 Message Date
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 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
Lioncash d90537cc18 AchievementManager: Return by reference from GetLock()
This makes the API a little nicer to use, since you don't need to do
a mandatory dereference when passing the lock into any kind of scope
guard.
2023-12-11 13:51:50 -05:00
Lioncash dbf28df64c DolphinQT: Remove unnecessary includes from achievement files
Reduces the amount of dependencies being pulled in on both local and
external headers.
2023-12-11 13:40:55 -05:00
Lioncash e55f9ed102 AchievementManager: Make GetInstance() return a reference
The internal static member will always have a valid lifetime. Makes this
consistent with other instance based objects in our code.
2023-12-11 13:36:39 -05:00
Admiral H. Curtiss 3873664143
DolphinQt/AchievementProgressWidget: Use ClearLayoutRecursively() to clear layout. 2023-10-15 22:54:40 +02:00
LillyJadeKatrin c8b1379113 Added error checking and logging to AchievementManager::GetAchievementProgress. 2023-10-01 10:27:57 -04:00
LillyJadeKatrin 80d77cfdad Added colored borders to badges in achievements dialog
The achievement badges will now have a blue or gold border to identify whether they have been unlocked in softcore or hardcore mode. Similarly, the game badge will have a blue border if all achievements have been unlocked in either mode or a gold border if all achievements have been unlocked in hardcore mode.
2023-09-30 23:29:02 -04:00
LillyJadeKatrin ba83efded6 Added badges to achievement progress tab
Provided the badges are turned on in the settings, each achievement will have a badge next to it on the progress tab. There are different badges for locked and unlocked (usually locked is grayscale while unlocked is in color but not necessarily) and the badge chosen depends on the player's current unlock and hardcore status.
2023-09-30 23:29:02 -04:00
LillyJadeKatrin 31091fc975 Added GameLoaded check to AchievementProgressWidget. 2023-09-28 00:55:58 -04:00
LillyJadeKatrin 582042de1f Added AchievementProgressWidget to AchievementsWindow
This widget is a tab in the AchievementsWindow that displays the player's current achievement progress: which achievements are locked or unlocked, and the progress of achievements that have progress metrics.
2023-07-01 22:26:29 -04:00