1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use crate::{file::ImperatorDeserializer, models::MetadataOwned, ImperatorError};
use jomini::binary::TokenResolver;
use serde::Deserialize;

#[derive(Debug)]
pub struct Save {
    pub meta: MetadataOwned,
    pub gamestate: GameState,
}

impl Save {
    pub fn from_deserializer<R>(
        deser: &ImperatorDeserializer,
        resolver: &R,
    ) -> Result<Self, ImperatorError>
    where
        R: TokenResolver,
    {
        let meta = deser.build(resolver)?;
        let gamestate = deser.build(resolver)?;
        Ok(Save { meta, gamestate })
    }
}

#[derive(Debug, Deserialize)]
pub struct GameState {
    pub speed: i32,
}