imperator_save/
lib.rs

1/*!
2# Imperator Save
3
4Imperator Save is a library to ergonomically work with Imperator Rome saves (debug + standard).
5
6```rust,ignore
7use imperator_save::{ImperatorFile, Encoding, EnvTokens, models::Save};
8
9let data = std::fs::read("assets/saves/observer1.5.rome")?;
10let file = ImperatorFile::from_slice(&data[..])?;
11assert_eq!(file.encoding(), Encoding::BinaryZip);
12
13let mut zip_sink = Vec::new();
14let parsed_file = file.parse(&mut zip_sink)?;
15let save = Save::from_deserializer(&parsed_file.deserializer(), &EnvTokens)?;
16assert_eq!(save.meta.version, String::from("1.5.3"));
17# Ok::<(), Box<dyn std::error::Error>>(())
18```
19
20## Ironman
21
22By default, standard saves will not be decoded properly.
23
24To enable support, one must supply an environment variable
25(`IMPERATOR_TOKENS`) that points to a newline delimited
26text file of token descriptions. For instance:
27
28```ignore
290xffff my_test_token
300xeeee my_test_token2
31```
32
33In order to comply with legal restrictions, I cannot share the list of
34tokens. I am also restricted from divulging how the list of tokens can be derived.
35*/
36
37mod date;
38mod deflate;
39mod errors;
40mod extraction;
41pub mod file;
42mod flavor;
43mod header;
44mod melt;
45pub mod models;
46mod tokens;
47
48pub use date::*;
49pub use errors::*;
50pub use extraction::*;
51#[doc(inline)]
52pub use file::ImperatorFile;
53pub use header::*;
54pub use jomini::binary::FailedResolveStrategy;
55pub use melt::*;
56pub use tokens::EnvTokens;