expeditionos/helpers/
save.rs

1// File to serialize/deserialize saves.
2
3use serde::Deserialize;
4use serde::Serialize;
5use toml::from_str;
6use std::fs;
7
8use super::files;
9
10// The save struct
11
12#[derive(Serialize, Deserialize, Debug)]
13pub struct Save {
14    pub cpu: usize,
15    pub os: usize,
16    pub ram: usize
17}
18
19// Encode the save file.
20// The save arguement should be the Save struct..
21pub fn make_save(save: Save) {
22    let toml_string = toml::to_string(&save).expect("Failed to serialize save game.");
23    let data_dir = files::get_config_directory();
24
25    fs::write(data_dir.join("save.toml"), toml_string).expect("Failed to save the save file.");
26}
27
28pub fn load_save() -> Save {
29    let data_dir = files::get_config_directory();
30
31    let save_toml_file_str = data_dir.join("save.toml");
32
33    let save_toml_string = fs::read_to_string(save_toml_file_str)
34        .expect("Failed to read save file.");
35    let save: Save = from_str(&save_toml_string)
36        .expect("Expected a proper save. It is not formatted correctly. Refer to the data_structs/cpu.rs structure.");
37
38    save
39}