mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Refactor load order caching into GameCache
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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_;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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_);
|
||||
|
||||
|
||||
@@ -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_;
|
||||
|
||||
Reference in New Issue
Block a user