Load all achievements icons in memory when loading the achievements schema in the interface ISteamUserStats rather than in the overlay, this is done in the periodic callback which is run on a separate thread
new option lazy_load_achievements_icons in configs.main.ini which is enabled by default, to lazy load achievements icons in memory when they're requested, rather than loading them on the next call to the periodic callback of the ISteamUserStats interface
Move all stats options in configs.main.ini to a new separate section [main::stats]
Fix a deadlock scenario in the overlay which could be triggered by the new lazy_load_achievements_icons option
In the overlay use the achievement icon handle from ISteamUserStats rather than manually loading the image from disk
In the overlay deprecate searching for achievements icons in achievement_images folder when loading icons, makes programming easier + it is no longer valid since the user stats interface is taking care of icons loading now
In the overlay don't check for the ready flag in networking callback, save the chat message and exit, when
the overlay is ready it will display it on next frame render, this avoids a scenario where a chat message might be missed if the overlay took too long to initialize
Fix a bug in the overlay when displaying progress notifications, where the achieved icon was shown instead of the gray/locked one
Make the test achievement in the overlay load either a locked or unlocked icon randomly
In the overlay don't attempt to load the icon more than once, with the new icon loading method it is enough to try once for each icon
Ensure generated schema from generate_emu_config tool contains name and description
Encapsulate image load/get functions + don't add new image resource if current one exists
Remove unused Vulkan headers
Generate random number for each debug log file, workaround a scenario where a game launcher exists in the same folder as the game, making both share the same file resulting in combined/confusing output
Split steam_user_stats class into multiple files for readability
Some games like appid 2242420 (free game) need this API, otherwise the launcher will crash.
The lazy loading option is enabled by default because some games like appid 218620 (payday 2) have a huge number of achievements, loading the icons all at once in the constructor would take ~2 mins.
When this option is disabled, the background thread will trigger the periodic callback which will then load the icons, that way the constructor won't be affected.
Steam_User_Stats::GetAchievementIcon()
ISteamUserStats
rather than in the overlay, this is done in the periodic callback which is run on a separate threadlazy_load_achievements_icons
inconfigs.main.ini
which is enabled by default, to lazy load achievements icons in memory when they're requested, rather than loading them on the next call to the periodic callback of theISteamUserStats
interfaceconfigs.main.ini
to a new separate section[main::stats]
lazy_load_achievements_icons
optionISteamUserStats
rather than manually loading the image from diskachievement_images
folder when loading icons, makes programming easier + it is no longer valid since the user stats interface is taking care of icons loading nowready
flag in networking callback, save the chat message and exit, when the overlay is ready it will display it on next frame render, this avoids a scenario where a chat message might be missed if the overlay took too long to initializegenerate_emu_config
tool contains name and descriptionVulkan
headerssteam_user_stats
class into multiple files for readabilitySome games like appid 2242420 (free game) need this API, otherwise the launcher will crash.
The lazy loading option is enabled by default because some games like appid 218620 (payday 2) have a huge number of achievements, loading the icons all at once in the constructor would take ~2 mins.
When this option is disabled, the background thread will trigger the periodic callback which will then load the icons, that way the constructor won't be affected.