ck3_history_extractor/game_data/
mod.rs1mod map;
2pub use map::{GameMap, MapGenerator, MapImage};
3
4mod localizer;
5use localizer::Localizer;
6pub use localizer::{LocalizationError, Localize};
7
8mod loader;
9pub use loader::GameDataLoader;
10use serde::Serialize;
11
12use super::types::{GameId, GameString, HashMap};
13
14#[derive(Serialize)]
15pub struct GameData {
16 map: Option<GameMap>,
17 localizer: Localizer,
18 title_province_map: HashMap<GameId, GameString>,
19}
20
21impl Localize<GameString> for GameData {
22 fn lookup<K: AsRef<str>>(&self, key: K) -> Option<GameString> {
23 self.localizer.lookup(key)
24 }
25
26 fn is_empty(&self) -> bool {
27 self.localizer.is_empty()
28 }
29}
30
31pub trait Localizable {
33 fn localize(&mut self, localization: &GameData) -> Result<(), LocalizationError>;
35 }
39
40impl GameData {
41 pub fn get_map(&self) -> Option<&GameMap> {
42 self.map.as_ref()
43 }
44
45 pub fn get_localizer(&self) -> &Localizer {
46 &self.localizer
47 }
48
49 pub fn lookup_title(&self, id: &GameId) -> Option<GameString> {
50 self.title_province_map.get(&id).cloned()
51 }
52}