From f53139453a91d154ca4fe7c005d52e28896dcf01 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Sat, 28 Jan 2017 16:49:04 +0000 Subject: [PATCH] Refactor load order caching into GameCache --- src/backend/game/game.cpp | 12 ++++++------ src/backend/game/game.h | 5 ++--- src/backend/game/game_cache.cpp | 8 ++++++++ src/backend/game/game_cache.h | 4 ++++ 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/backend/game/game.cpp b/src/backend/game/game.cpp index 735a819d..6afafd4a 100644 --- a/src/backend/game/game.cpp +++ b/src/backend/game/game.cpp @@ -119,6 +119,7 @@ void Game::Init() { } loadOrderHandler_.Init(*this, localDataPath_); + StoreLoadOrder(loadOrderHandler_.GetLoadOrder()); } void Game::RedatePlugins() { @@ -275,16 +276,15 @@ short Game::GetActiveLoadOrderIndex(const std::string & pluginName, const std::v } std::vector Game::GetLoadOrder() const { - if (loadOrder_.empty()) - loadOrder_ = loadOrderHandler_.GetLoadOrder(); + auto loadOrder = GameCache::GetLoadOrder(); - return loadOrder_; + return loadOrder; } -void Game::SetLoadOrder(const std::vector& loadOrder) const { - loadOrderHandler_.BackupLoadOrder(loadOrder_, lootDataPath_ / FolderName()); +void Game::SetLoadOrder(const std::vector& loadOrder) { + loadOrderHandler_.BackupLoadOrder(GetLoadOrder(), lootDataPath_ / FolderName()); loadOrderHandler_.SetLoadOrder(loadOrder); - loadOrder_ = loadOrder; + StoreLoadOrder(loadOrder); } fs::path Game::MasterlistPath() const { diff --git a/src/backend/game/game.h b/src/backend/game/game.h index 24d545dd..9a37d7e8 100644 --- a/src/backend/game/game.h +++ b/src/backend/game/game.h @@ -36,7 +36,7 @@ namespace loot { class Game : public GameSettings, public GameCache { public: - Game(const GameSettings& gameSettings, + Game(const GameSettings& gameSettings, const boost::filesystem::path& lootDataPath, const boost::filesystem::path& localDataPath = ""); @@ -56,7 +56,7 @@ public: short GetActiveLoadOrderIndex(const std::string & pluginName, const std::vector& loadOrder) const; std::vector GetLoadOrder() const; - void SetLoadOrder(const std::vector& loadOrder) const; + void SetLoadOrder(const std::vector& loadOrder); boost::filesystem::path MasterlistPath() const; boost::filesystem::path UserlistPath() const; @@ -70,7 +70,6 @@ private: bool pluginsFullyLoaded_; LoadOrderHandler loadOrderHandler_; - mutable std::vector loadOrder_; }; } diff --git a/src/backend/game/game_cache.cpp b/src/backend/game/game_cache.cpp index 468db053..65f25e87 100644 --- a/src/backend/game/game_cache.cpp +++ b/src/backend/game/game_cache.cpp @@ -127,6 +127,14 @@ void GameCache::AppendMessage(const Message& message) { messages_.push_back(message); } +std::vector GameCache::GetLoadOrder() const { + return loadOrder_; +} + +void GameCache::StoreLoadOrder(const std::vector& loadOrder) { + loadOrder_ = loadOrder; +} + void GameCache::IncrementLoadOrderSortCount() { lock_guard guard(mutex_); diff --git a/src/backend/game/game_cache.h b/src/backend/game/game_cache.h index 87845649..bb3785ca 100644 --- a/src/backend/game/game_cache.h +++ b/src/backend/game/game_cache.h @@ -55,6 +55,9 @@ public: std::vector GetMessages() const; void AppendMessage(const Message& message); + std::vector GetLoadOrder() const; + void StoreLoadOrder(const std::vector& loadOrder); + void IncrementLoadOrderSortCount(); void DecrementLoadOrderSortCount(); @@ -67,6 +70,7 @@ private: std::unordered_map conditions_; std::unordered_map plugins_; std::vector messages_; + std::vector loadOrder_; unsigned short loadOrderSortCount_; mutable std::mutex mutex_;