void LootSettings::upgradeYaml(YAML::Node& yaml) { // Upgrade YAML settings' keys and values from those used in earlier // versions of LOOT. if (yaml["Debug Verbosity"] && !yaml["enableDebugLogging"]) yaml["enableDebugLogging"] = yaml["Debug Verbosity"].as<unsigned int>() > 0; if (yaml["Update Masterlist"] && !yaml["updateMasterlist"]) yaml["updateMasterlist"] = yaml["Update Masterlist"]; if (yaml["Game"] && !yaml["game"]) yaml["game"] = yaml["Game"]; if (yaml["Language"] && !yaml["language"]) yaml["language"] = yaml["Language"]; if (yaml["Last Game"] && !yaml["lastGame"]) yaml["lastGame"] = yaml["Last Game"]; if (yaml["Games"] && !yaml["games"]) { yaml["games"] = yaml["Games"]; for (auto node : yaml["games"]) { if (node["url"]) { node["repo"] = node["url"]; node["branch"] = "master"; // It'll get updated to the correct default } } } if (yaml["games"]) { // Handle exception if YAML is invalid, eg. if an unrecognised // game type is used (which can happen if downgrading from a // later version of LOOT that supports more game types). // However, can't remove elements from a sequence Node, so have to // copy the valid elements into a new node then overwrite the // original. YAML::Node validGames; for (auto node : yaml["games"]) { try { GameSettings settings(node.as<GameSettings>()); if (!yaml["Games"]) { // Update existing default branch, if the default // repositories are used. if (settings.RepoURL() == GameSettings(settings.Type()).RepoURL() && settings.IsRepoBranchOldDefault()) { settings.SetRepoBranch(GameSettings(settings.Type()).RepoBranch()); } } validGames.push_back(settings); } catch (...) {} } yaml["games"] = validGames; } if (yaml["filters"]) yaml["filters"].remove("contentFilter"); }
int main(int argc, char** argv) { Game game(GameSettings(sf::VideoMode(800, 600, 32), "Temporal Mist")); game.Run(); return 0; }
void NetworkInterface::init() { networkAccessMutex = NULL; networkGameDataSynchCheckOkMap=false; networkGameDataSynchCheckOkTile=false; networkGameDataSynchCheckOkTech=false; receivedDataSynchCheck=false; gameSettings = GameSettings(); networkPlayerFactionCRCMutex = NULL; for(unsigned int index = 0; index < (unsigned int)GameConstants::maxPlayers; ++index) { networkPlayerFactionCRC[index] = 0; } }
LootSettings::LootSettings() : gameSettings_({ GameSettings(GameType::tes4), GameSettings(GameType::tes5), GameSettings(GameType::tes5se), GameSettings(GameType::fo3), GameSettings(GameType::fonv), GameSettings(GameType::fo4), GameSettings(GameType::tes4, "Nehrim") .SetName("Nehrim - At Fate's Edge") .SetMaster("Nehrim.esm") .SetRegistryKey("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Nehrim - At Fate's Edge_is1\\InstallLocation"), }), enableDebugLogging_(false), updateMasterlist_(true), game_("auto"), language_(Language(LanguageCode::english)), lastGame_("auto") {}
std::list<GameSettings> GetGameSettings(YAML::Node& settings) { list<GameSettings> games; if (settings["games"]) games = settings["games"].as< list<GameSettings> >(); if (find(games.begin(), games.end(), GameSettings(GameSettings::tes4)) == games.end()) games.push_back(GameSettings(GameSettings::tes4)); if (find(games.begin(), games.end(), GameSettings(GameSettings::tes5)) == games.end()) games.push_back(GameSettings(GameSettings::tes5)); if (find(games.begin(), games.end(), GameSettings(GameSettings::fo3)) == games.end()) games.push_back(GameSettings(GameSettings::fo3)); if (find(games.begin(), games.end(), GameSettings(GameSettings::fonv)) == games.end()) games.push_back(GameSettings(GameSettings::fonv)); // If there were any missing defaults, make sure they're in settings now. settings["games"] = games; return games; }
void LootSettings::load(YAML::Node& settings) { lock_guard<recursive_mutex> guard(mutex_); upgradeYaml(settings); if (settings["enableDebugLogging"]) enableDebugLogging_ = settings["enableDebugLogging"].as<bool>(); if (settings["updateMasterlist"]) updateMasterlist_ = settings["updateMasterlist"].as<bool>(); if (settings["game"]) game_ = settings["game"].as<string>(); if (settings["language"]) language_ = Language(settings["language"].as<string>()); if (settings["lastGame"]) lastGame_ = settings["lastGame"].as<string>(); if (settings["lastVersion"]) lastVersion_ = settings["lastVersion"].as<string>(); if (settings["window"] && settings["window"]["top"] && settings["window"]["bottom"] && settings["window"]["left"] && settings["window"]["right"]) { windowPosition_.top = settings["window"]["top"].as<long>(); windowPosition_.bottom = settings["window"]["bottom"].as<long>(); windowPosition_.left = settings["window"]["left"].as<long>(); windowPosition_.right = settings["window"]["right"].as<long>(); } if (settings["games"]) { gameSettings_ = settings["games"].as<std::vector<GameSettings>>(); // If a base game isn't in the settings, add it. if (find(begin(gameSettings_), end(gameSettings_), GameSettings(GameType::tes4)) == end(gameSettings_)) gameSettings_.push_back(GameSettings(GameType::tes4)); if (find(begin(gameSettings_), end(gameSettings_), GameSettings(GameType::tes5)) == end(gameSettings_)) gameSettings_.push_back(GameSettings(GameType::tes5)); if (find(begin(gameSettings_), end(gameSettings_), GameSettings(GameType::tes5se)) == end(gameSettings_)) gameSettings_.push_back(GameSettings(GameType::tes5se)); if (find(begin(gameSettings_), end(gameSettings_), GameSettings(GameType::fo3)) == end(gameSettings_)) gameSettings_.push_back(GameSettings(GameType::fo3)); if (find(begin(gameSettings_), end(gameSettings_), GameSettings(GameType::fonv)) == end(gameSettings_)) gameSettings_.push_back(GameSettings(GameType::fonv)); if (find(begin(gameSettings_), end(gameSettings_), GameSettings(GameType::fo4)) == end(gameSettings_)) gameSettings_.push_back(GameSettings(GameType::fo4)); } if (settings["filters"]) filters_ = settings["filters"].as<std::map<string, bool>>(); }
bool LootState::AreSettingsValid() { // Acquire the lock for the scope of this method. base::AutoLock lock_scope(_lock); if (!_settings["language"]) { if (_settings["Language"]) { // Conversion from 0.6 key. _settings["language"] = _settings["Language"]; _settings.remove("Language"); } else return false; } if (!_settings["game"]) { if (_settings["Game"]) { // Conversion from 0.6 key. _settings["game"] = _settings["Game"]; _settings.remove("Game"); } else return false; } if (!_settings["lastGame"]) { if (_settings["Last Game"]) { // Conversion from 0.6 key. _settings["lastGame"] = _settings["Last Game"]; _settings.remove("Last Game"); } else return false; } if (!_settings["enableDebugLogging"]) { if (_settings["Debug Verbosity"]) { // Conversion from 0.6 key. _settings["enableDebugLogging"] = (_settings["Debug Verbosity"].as<unsigned int>() > 0); _settings.remove("Debug Verbosity"); } else if (_settings["debugVerbosity"]) { // Conversion from 0.7 alpha key _settings["enableDebugLogging"] = (_settings["debugVerbosity"].as<unsigned int>() > 0); _settings.remove("debugVerbosity"); } else return false; } if (!_settings["updateMasterlist"]) { if (_settings["Update Masterlist"]) { // Conversion from 0.6 key. _settings["updateMasterlist"] = _settings["Update Masterlist"]; _settings.remove("Update Masterlist"); } else return false; } if (!_settings["games"]) { if (_settings["Games"]) { // Conversion from 0.6 key. _settings["games"] = _settings["Games"]; for (auto &node : _settings["games"]) { if (node["url"]) { node["repo"] = node["url"]; node["branch"] = "v0.7"; node.remove("url"); } } _settings.remove("Games"); } else return false; } else { // Update existing default branches to new version default, if the // default repositories are used. for (auto &node : _settings["games"]) { GameSettings settings(node.as<GameSettings>()); if (settings.RepoURL() == GameSettings(settings.Id()).RepoURL() && settings.RepoBranch() == "master") { node["branch"] = "v0.7"; } } } if (_settings["windows"]) _settings.remove("windows"); return true; }