pub struct EncodeableExtraData<'a> { /* private fields */ }Expand description
Additional context data for Encodeable::encode() operations.
This structure provides optional configuration and metadata that encoders may need to properly serialize structured data to binary format. Different file types use different subsets of these fields.
§Field Categories
- Configuration toggles: Control encoder behavior (test mode, date handling, GUIDs)
- Optional config data: Game info, compression settings
§Usage
use rpfm_lib::files::EncodeableExtraData;
use rpfm_lib::compression::CompressionFormat;
// For encoding a DB table with GUID
let extra_data = EncodeableExtraData::default()
.set_game_info(Some(&game_info))
.set_table_has_guid(true)
.set_regenerate_table_guid(true);
// For encoding with compression
let extra_data = EncodeableExtraData::default()
.set_compression_format(CompressionFormat::Lz4)
.set_game_info(Some(&game_info));§Common Configurations
- DB Tables: Use
table_has_guidandregenerate_table_guidto control GUID handling - Containers (PackFiles): Use
compression_formatto enable compression - Testing: Use
test_modeandnullify_datesfor deterministic output - ESF Files: Use
disable_compressionfor nested encoding
For specific requirements, consult each file type’s documentation.
Implementations§
Source§impl<'a> EncodeableExtraData<'a>
impl<'a> EncodeableExtraData<'a>
Sourcepub fn test_mode(&self) -> &bool
pub fn test_mode(&self) -> &bool
Enable test mode for deterministic output.
When true, encoders may skip randomization or use fixed values for fields
that would normally vary (like auto-generated IDs), making output reproducible
for testing purposes.
Sourcepub fn nullify_dates(&self) -> &bool
pub fn nullify_dates(&self) -> &bool
Zero out all date and timestamp fields.
When true, any date or timestamp fields are written as 0 instead of their
actual values. Used in conjunction with test_mode for reproducible output,
or when dates should be reset.
Sourcepub fn table_has_guid(&self) -> &bool
pub fn table_has_guid(&self) -> &bool
Include a GUID in the DB table header.
When true, table encoders will write a GUID (Globally Unique Identifier) in
the table header. Required for Shogun 2 and newer games. Must be false for Empire
and Napoleon, as including a GUID crashes those games on load.
Sourcepub fn regenerate_table_guid(&self) -> &bool
pub fn regenerate_table_guid(&self) -> &bool
Generate a new GUID for the table instead of preserving the existing one.
When true, a fresh random GUID is generated. When false, the existing GUID
(if any) is preserved. Only meaningful when table_has_guid is also true.
Sourcepub fn game_info(&self) -> &Option<&'a GameInfo>
pub fn game_info(&self) -> &Option<&'a GameInfo>
Complete game information context.
Provides game-specific settings, version info, and feature flags that may affect encoding behavior (e.g., format variations between game versions).
Sourcepub fn compression_format(&self) -> &CompressionFormat
pub fn compression_format(&self) -> &CompressionFormat
Compression format to use when writing files.
Specifies which compression algorithm to apply. Common formats include:
CompressionFormat::None: No compressionCompressionFormat::Lz4: Fast compressionCompressionFormat::Zstd: Modern compression (best ratio)CompressionFormat::Lzma1: Legacy compression (older games)
The game info may override this based on what the target game supports.
Sourcepub fn disable_compression(&self) -> &bool
pub fn disable_compression(&self) -> &bool
Disable compression for nested encoding operations.
When true, prevents compression even if compression_format is set. Used for
ESF (Empire Save File) encoding where the outer container handles compression
and inner structures should remain uncompressed to avoid double-compression.
Source§impl<'a> EncodeableExtraData<'a>
impl<'a> EncodeableExtraData<'a>
Sourcepub fn set_test_mode(&mut self, val: bool) -> &mut Self
pub fn set_test_mode(&mut self, val: bool) -> &mut Self
Enable test mode for deterministic output.
When true, encoders may skip randomization or use fixed values for fields
that would normally vary (like auto-generated IDs), making output reproducible
for testing purposes.
Sourcepub fn set_nullify_dates(&mut self, val: bool) -> &mut Self
pub fn set_nullify_dates(&mut self, val: bool) -> &mut Self
Zero out all date and timestamp fields.
When true, any date or timestamp fields are written as 0 instead of their
actual values. Used in conjunction with test_mode for reproducible output,
or when dates should be reset.
Sourcepub fn set_table_has_guid(&mut self, val: bool) -> &mut Self
pub fn set_table_has_guid(&mut self, val: bool) -> &mut Self
Include a GUID in the DB table header.
When true, table encoders will write a GUID (Globally Unique Identifier) in
the table header. Required for Shogun 2 and newer games. Must be false for Empire
and Napoleon, as including a GUID crashes those games on load.
Sourcepub fn set_regenerate_table_guid(&mut self, val: bool) -> &mut Self
pub fn set_regenerate_table_guid(&mut self, val: bool) -> &mut Self
Generate a new GUID for the table instead of preserving the existing one.
When true, a fresh random GUID is generated. When false, the existing GUID
(if any) is preserved. Only meaningful when table_has_guid is also true.
Sourcepub fn set_game_info(&mut self, val: Option<&'a GameInfo>) -> &mut Self
pub fn set_game_info(&mut self, val: Option<&'a GameInfo>) -> &mut Self
Complete game information context.
Provides game-specific settings, version info, and feature flags that may affect encoding behavior (e.g., format variations between game versions).
Sourcepub fn set_compression_format(&mut self, val: CompressionFormat) -> &mut Self
pub fn set_compression_format(&mut self, val: CompressionFormat) -> &mut Self
Compression format to use when writing files.
Specifies which compression algorithm to apply. Common formats include:
CompressionFormat::None: No compressionCompressionFormat::Lz4: Fast compressionCompressionFormat::Zstd: Modern compression (best ratio)CompressionFormat::Lzma1: Legacy compression (older games)
The game info may override this based on what the target game supports.
Sourcepub fn set_disable_compression(&mut self, val: bool) -> &mut Self
pub fn set_disable_compression(&mut self, val: bool) -> &mut Self
Disable compression for nested encoding operations.
When true, prevents compression even if compression_format is set. Used for
ESF (Empire Save File) encoding where the outer container handles compression
and inner structures should remain uncompressed to avoid double-compression.
Source§impl<'a> EncodeableExtraData<'a>
impl<'a> EncodeableExtraData<'a>
Sourcepub fn new_from_game_info(game_info: &'a GameInfo) -> Self
pub fn new_from_game_info(game_info: &'a GameInfo) -> Self
This functions generates an EncodeableExtraData for a specific game.
Sourcepub fn new_from_game_info_and_settings(
game_info: &'a GameInfo,
cf: CompressionFormat,
disable_regen_table_guid: bool,
) -> EncodeableExtraData<'a>
pub fn new_from_game_info_and_settings( game_info: &'a GameInfo, cf: CompressionFormat, disable_regen_table_guid: bool, ) -> EncodeableExtraData<'a>
This functions generates an EncodeableExtraData for a specific game and settings.
Trait Implementations§
Source§impl<'a> Clone for EncodeableExtraData<'a>
impl<'a> Clone for EncodeableExtraData<'a>
Source§fn clone(&self) -> EncodeableExtraData<'a>
fn clone(&self) -> EncodeableExtraData<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'a> Default for EncodeableExtraData<'a>
impl<'a> Default for EncodeableExtraData<'a>
Source§fn default() -> EncodeableExtraData<'a>
fn default() -> EncodeableExtraData<'a>
Auto Trait Implementations§
impl<'a> Freeze for EncodeableExtraData<'a>
impl<'a> RefUnwindSafe for EncodeableExtraData<'a>
impl<'a> Send for EncodeableExtraData<'a>
impl<'a> Sync for EncodeableExtraData<'a>
impl<'a> Unpin for EncodeableExtraData<'a>
impl<'a> UnsafeUnpin for EncodeableExtraData<'a>
impl<'a> UnwindSafe for EncodeableExtraData<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.