mirror of
https://github.com/N64Recomp/N64ModernRuntime.git
synced 2025-10-30 08:02:29 +00:00
Enable new mods by default.
This commit is contained in:
parent
19e751b2f2
commit
c8fc47b1c7
1 changed files with 24 additions and 22 deletions
|
|
@ -828,23 +828,19 @@ std::vector<recomp::mods::ModOpenErrorDetails> recomp::mods::ModContext::scan_mo
|
||||||
void recomp::mods::ModContext::load_mods_config() {
|
void recomp::mods::ModContext::load_mods_config() {
|
||||||
std::unordered_set<std::string> config_enabled_mods;
|
std::unordered_set<std::string> config_enabled_mods;
|
||||||
std::vector<std::string> config_mod_order;
|
std::vector<std::string> config_mod_order;
|
||||||
bool parsed = parse_mods_config(mods_config_path, config_enabled_mods, config_mod_order);
|
std::vector<bool> opened_mod_is_known;
|
||||||
if (parsed) {
|
parse_mods_config(mods_config_path, config_enabled_mods, config_mod_order);
|
||||||
for (const std::string &mod_id : config_enabled_mods) {
|
|
||||||
enable_mod(mod_id, true, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
std::unique_lock lock(opened_mods_mutex);
|
|
||||||
|
|
||||||
// Fill a vector with the relative order of the mods. Existing mods will get ordered below new mods.
|
// Fill a vector with the relative order of the mods. Existing mods will get ordered below new mods.
|
||||||
std::vector<size_t> sort_order;
|
std::vector<size_t> sort_order;
|
||||||
sort_order.resize(opened_mods.size());
|
sort_order.resize(opened_mods.size());
|
||||||
|
opened_mod_is_known.resize(opened_mods.size(), false);
|
||||||
std::iota(sort_order.begin(), sort_order.end(), 0);
|
std::iota(sort_order.begin(), sort_order.end(), 0);
|
||||||
for (size_t i = 0; i < config_mod_order.size(); i++) {
|
for (size_t i = 0; i < config_mod_order.size(); i++) {
|
||||||
auto it = opened_mods_by_id.find(config_mod_order[i]);
|
auto it = opened_mods_by_id.find(config_mod_order[i]);
|
||||||
if (it != opened_mods_by_id.end()) {
|
if (it != opened_mods_by_id.end()) {
|
||||||
sort_order[it->second] = opened_mods.size() + i;
|
sort_order[it->second] = opened_mods.size() + i;
|
||||||
|
opened_mod_is_known[it->second] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -853,6 +849,12 @@ void recomp::mods::ModContext::load_mods_config() {
|
||||||
std::sort(opened_mods_order.begin(), opened_mods_order.end(), [&](size_t i, size_t j) {
|
std::sort(opened_mods_order.begin(), opened_mods_order.end(), [&](size_t i, size_t j) {
|
||||||
return sort_order[i] < sort_order[j];
|
return sort_order[i] < sort_order[j];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Enable mods that are specified in the configuration or mods that are considered new.
|
||||||
|
for (size_t i = 0; i < opened_mods.size(); i++) {
|
||||||
|
const std::string &mod_id = opened_mods[i].manifest.mod_id;
|
||||||
|
if (!opened_mod_is_known[i] || (config_enabled_mods.find(mod_id) != config_enabled_mods.end())) {
|
||||||
|
enable_mod(mod_id, true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue