diff --git a/lib/sdk/src/filetype/package.rs b/lib/sdk/src/filetype/package.rs index fc2e8f6..338cc8e 100644 --- a/lib/sdk/src/filetype/package.rs +++ b/lib/sdk/src/filetype/package.rs @@ -97,6 +97,7 @@ pub struct Package { _name: String, _root: PathBuf, inner: PackageType, + flags: u8, } impl Deref for Package { @@ -119,6 +120,7 @@ impl Package { _name: name, _root: root, inner: Default::default(), + flags: 1, } } @@ -179,6 +181,7 @@ impl Package { inner, _name: name, _root: root.to_path_buf(), + flags: 1, }; Ok(pkg) @@ -225,10 +228,19 @@ impl Package { .insert(PathBuf::from(path.display().to_string())); } + let flags = r.read_u8()?; + + if cfg!(debug_assertions) && flags != 1 { + tracing::warn!("Unexpected value for package flags: {:0x}", flags); + } else if (flags & 0xFE) >= 2 { + tracing::warn!("Resource Package has common packages. Ignoring."); + } + let pkg = Self { inner, _name: name, _root: PathBuf::new(), + flags, }; Ok(pkg) @@ -251,6 +263,8 @@ impl Package { } } + w.write_u8(self.flags)?; + Ok(w.into_inner()) } }