Add default enabled state to mod manifest (#104)
Some checks are pending
validate / ubuntu (arm64, Debug) (push) Waiting to run
validate / ubuntu (arm64, Release) (push) Waiting to run
validate / ubuntu (x64, Debug) (push) Waiting to run
validate / ubuntu (x64, Release) (push) Waiting to run
validate / windows (x64, Debug) (push) Waiting to run
validate / windows (x64, Release) (push) Waiting to run
validate / macos (arm64, Debug) (push) Waiting to run
validate / macos (arm64, Release) (push) Waiting to run
validate / macos (x64, Debug) (push) Waiting to run
validate / macos (x64, Release) (push) Waiting to run

This commit is contained in:
Wiseguy 2025-04-09 04:35:21 -04:00 committed by GitHub
parent 234ed4a95e
commit d2f9a32b90
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 16 additions and 3 deletions

View file

@ -220,6 +220,7 @@ namespace recomp {
std::vector<std::string> authors;
std::vector<Dependency> dependencies;
bool runtime_toggleable;
bool enabled_by_default;
};
struct ModManifest {
@ -237,6 +238,7 @@ namespace recomp {
Version minimum_recomp_version;
Version version;
bool runtime_toggleable;
bool enabled_by_default = true;
std::vector<NativeLibraryManifest> native_libraries;
std::unique_ptr<ModFileHandle> file_handle;
@ -476,7 +478,8 @@ namespace recomp {
.version = manifest.version,
.authors = manifest.authors,
.dependencies = manifest.dependencies,
.runtime_toggleable = is_runtime_toggleable()
.runtime_toggleable = is_runtime_toggleable(),
.enabled_by_default = manifest.enabled_by_default
};
}
private:

View file

@ -169,6 +169,7 @@ const std::string short_description_key = "short_description";
const std::string version_key = "version";
const std::string authors_key = "authors";
const std::string minimum_recomp_version_key = "minimum_recomp_version";
const std::string enabled_by_default_key = "enabled_by_default";
const std::string dependencies_key = "dependencies";
const std::string native_libraries_key = "native_libraries";
const std::string config_schema_key = "config_schema";
@ -573,6 +574,12 @@ recomp::mods::ModOpenError recomp::mods::parse_manifest(ModManifest& ret, const
return current_error;
}
// Enabled by default (optional)
current_error = try_get<json::boolean_t>(ret.enabled_by_default, manifest_json, enabled_by_default_key, false, error_param);
if (current_error != ModOpenError::Good) {
return current_error;
}
// Dependencies (optional)
std::vector<std::string> dep_strings{};
current_error = try_get_vec<json::string_t>(dep_strings, manifest_json, dependencies_key, false, error_param);

View file

@ -862,8 +862,11 @@ void recomp::mods::ModContext::load_mods_config() {
// 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())) {
const ModHandle& mod = opened_mods[i];
const std::string &mod_id = mod.manifest.mod_id;
bool is_default_enabled = !opened_mod_is_known[i] && mod.manifest.enabled_by_default;
bool is_manually_enabled = config_enabled_mods.contains(mod_id);
if (is_default_enabled || is_manually_enabled) {
enable_mod(mod_id, true, false);
}
}