diff --git a/crates/dtmm/src/state/data.rs b/crates/dtmm/src/state/data.rs index 55774aa..c43e973 100644 --- a/crates/dtmm/src/state/data.rs +++ b/crates/dtmm/src/state/data.rs @@ -109,6 +109,7 @@ pub(crate) struct ModInfo { #[data(ignore)] pub resources: ModResourceInfo, pub depends: Vector, + pub bundle: bool, #[data(ignore)] pub nexus: Option, } @@ -129,6 +130,7 @@ impl ModInfo { version: cfg.version, enabled: false, packages, + bundle: cfg.bundle, image, categories: cfg.categories.into_iter().collect(), resources: ModResourceInfo { diff --git a/crates/dtmt/src/cmd/migrate.rs b/crates/dtmt/src/cmd/migrate.rs index 1a4d605..8ecd648 100644 --- a/crates/dtmt/src/cmd/migrate.rs +++ b/crates/dtmt/src/cmd/migrate.rs @@ -350,6 +350,7 @@ pub(crate) async fn run(_ctx: sdk::Context, matches: &ArgMatches) -> Result<()> localization: mod_file.localization, }, depends: vec![ModDependency::ID(String::from("DMF"))], + bundle: true, }; tracing::debug!(?dtmt_cfg); diff --git a/lib/dtmt-shared/src/lib.rs b/lib/dtmt-shared/src/lib.rs index 3907928..a162d3b 100644 --- a/lib/dtmt-shared/src/lib.rs +++ b/lib/dtmt-shared/src/lib.rs @@ -30,6 +30,17 @@ pub enum ModDependency { Config { id: String, order: ModOrder }, } +// A bit dumb, but serde doesn't support literal values with the +// `default` attribute, only paths. +fn default_true() -> bool { + true +} + +// Similarly dumb, as the `skip_serializing_if` attribute needs a function +fn is_true(val: &bool) -> bool { + *val +} + #[derive(Clone, Debug, Default, Deserialize, Serialize)] pub struct ModConfig { #[serde(skip)] @@ -51,6 +62,8 @@ pub struct ModConfig { pub resources: ModConfigResources, #[serde(default)] pub depends: Vec, + #[serde(default = "default_true", skip_serializing_if = "is_true")] + pub bundle: bool, } pub const STEAMAPP_ID: u32 = 1361210;