Refactor load order caching into GameCache

This commit is contained in:
Oliver Hamlet
2017-02-06 18:02:17 +00:00
parent b76b2387f6
commit f53139453a
4 changed files with 20 additions and 9 deletions
+6 -6
View File
@@ -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<std::string> Game::GetLoadOrder() const {
if (loadOrder_.empty())
loadOrder_ = loadOrderHandler_.GetLoadOrder();
auto loadOrder = GameCache::GetLoadOrder();
return loadOrder_;
return loadOrder;
}
void Game::SetLoadOrder(const std::vector<std::string>& loadOrder) const {
loadOrderHandler_.BackupLoadOrder(loadOrder_, lootDataPath_ / FolderName());
void Game::SetLoadOrder(const std::vector<std::string>& loadOrder) {
loadOrderHandler_.BackupLoadOrder(GetLoadOrder(), lootDataPath_ / FolderName());
loadOrderHandler_.SetLoadOrder(loadOrder);
loadOrder_ = loadOrder;
StoreLoadOrder(loadOrder);
}
fs::path Game::MasterlistPath() const {
+2 -3
View File
@@ -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<std::string>& loadOrder) const;
std::vector<std::string> GetLoadOrder() const;
void SetLoadOrder(const std::vector<std::string>& loadOrder) const;
void SetLoadOrder(const std::vector<std::string>& loadOrder);
boost::filesystem::path MasterlistPath() const;
boost::filesystem::path UserlistPath() const;
@@ -70,7 +70,6 @@ private:
bool pluginsFullyLoaded_;
LoadOrderHandler loadOrderHandler_;
mutable std::vector<std::string> loadOrder_;
};
}
+8
View File
@@ -127,6 +127,14 @@ void GameCache::AppendMessage(const Message& message) {
messages_.push_back(message);
}
std::vector<std::string> GameCache::GetLoadOrder() const {
return loadOrder_;
}
void GameCache::StoreLoadOrder(const std::vector<std::string>& loadOrder) {
loadOrder_ = loadOrder;
}
void GameCache::IncrementLoadOrderSortCount() {
lock_guard<mutex> guard(mutex_);
+4
View File
@@ -55,6 +55,9 @@ public:
std::vector<Message> GetMessages() const;
void AppendMessage(const Message& message);
std::vector<std::string> GetLoadOrder() const;
void StoreLoadOrder(const std::vector<std::string>& loadOrder);
void IncrementLoadOrderSortCount();
void DecrementLoadOrderSortCount();
@@ -67,6 +70,7 @@ private:
std::unordered_map<std::string, bool> conditions_;
std::unordered_map<std::string, Plugin> plugins_;
std::vector<Message> messages_;
std::vector<std::string> loadOrder_;
unsigned short loadOrderSortCount_;
mutable std::mutex mutex_;