diff options
author | Morxemplum <morxemplum+github@gmail.com> | 2021-10-23 01:05:39 -0700 |
---|---|---|
committer | Morxemplum <morxemplum+github@gmail.com> | 2021-10-23 01:05:39 -0700 |
commit | e571c18f3f91073129817a8fa6a9f2f7209226de (patch) | |
tree | 0e5e130c04c60872f26c615fb9b46cf5c97f017e | |
parent | 5cb41e15d70691a43558f1810093fb1fbbca7677 (diff) |
Add remaining changesoffline_cache
-rw-r--r-- | include/SSVOpenHexagon/Global/Assets.hpp | 2 | ||||
-rw-r--r-- | src/SSVOpenHexagon/Core/Steam.cpp | 20 |
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"); |