summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMorxemplum <morxemplum+github@gmail.com>2021-10-23 01:05:39 -0700
committerMorxemplum <morxemplum+github@gmail.com>2021-10-23 01:05:39 -0700
commite571c18f3f91073129817a8fa6a9f2f7209226de (patch)
tree0e5e130c04c60872f26c615fb9b46cf5c97f017e
parent5cb41e15d70691a43558f1810093fb1fbbca7677 (diff)
Add remaining changesoffline_cache
-rw-r--r--include/SSVOpenHexagon/Global/Assets.hpp2
-rw-r--r--src/SSVOpenHexagon/Core/Steam.cpp20
2 files changed, 12 insertions, 10 deletions
diff --git a/include/SSVOpenHexagon/Global/Assets.hpp b/include/SSVOpenHexagon/Global/Assets.hpp
index 279e7b88..75815ab6 100644
--- a/include/SSVOpenHexagon/Global/Assets.hpp
+++ b/include/SSVOpenHexagon/Global/Assets.hpp
@@ -103,6 +103,8 @@ public:
~HGAssets();
+ // When the Steam API can not be retrieved, this set holds pack ids
+ // retrieved from the cache to try and load the workshop packs installed
std::unordered_set<std::string> cachedWorkshopPackIds;
[[nodiscard]] LoadInfo& getLoadResults();
diff --git a/src/SSVOpenHexagon/Core/Steam.cpp b/src/SSVOpenHexagon/Core/Steam.cpp
index 3b7bc3a4..de77d90b 100644
--- a/src/SSVOpenHexagon/Core/Steam.cpp
+++ b/src/SSVOpenHexagon/Core/Steam.cpp
@@ -191,8 +191,7 @@ void steam_manager::steam_manager_impl::load_workshop_data()
constexpr std::size_t folderBufSize = 512;
char folderBuf[folderBufSize];
- int numPacks = 0;
- ssvuj::Obj cacheArray{ssvuj::Obj{}};
+ ssvuj::Obj cacheArray;
for(PublishedFileId_t id : subscribedItemsIds)
{
@@ -206,24 +205,25 @@ void steam_manager::steam_manager_impl::load_workshop_data()
if(installed)
{
+ std::string folderBufStr{folderBuf};
+
ssvu::lo("Steam")
<< "Workshop id " << id << " is installed, with size "
- << itemDiskSize << " at folder " << std::string{folderBuf}
- << '\n';
-
- _workshop_pack_folders.emplace(std::string{folderBuf});
+ << itemDiskSize << " at folder " << folderBufStr << '\n';
// Write the path to an element in a JSON array.
- ssvuj::arch(cacheArray, numPacks, std::string{folderBuf});
- numPacks++;
+ ssvuj::arch(
+ cacheArray, _workshop_pack_folders.size(), folderBufStr);
+
+ _workshop_pack_folders.emplace(std::move(folderBufStr));
}
}
// Update the workshop cache with our loaded folders
- if(numPacks > 0)
+ if(_workshop_pack_folders.size() > 0)
{
ssvu::lo("Steam") << "Updating workshop cache\n";
- ssvuj::Obj cacheObj{ssvuj::Obj{}};
+ ssvuj::Obj cacheObj;
ssvuj::arch(cacheObj, "cachedPacks", cacheArray);
ssvuj::writeToFile(cacheObj, "workshopCache.json");