termfarm 2.0.1

A terminal idle farming game
use crate::{market::update_market_if_needed, models::FarmState};
use std::fs;

pub fn save_path() -> String {
    let home = dirs::home_dir()
        .map(|p| p.to_string_lossy().into_owned())
        .unwrap_or_default();
    let dir = home + "/.local/share/termfarm";

    _ = fs::create_dir_all(&dir);

    dir + "/save.json"
}

pub fn load_farm() -> FarmState {
    let path = save_path();
    let mut farm = fs::read_to_string(path)
        .ok()
        .and_then(|s| serde_json::from_str(&s).ok())
        .unwrap();

    update_market_if_needed(&mut farm);

    farm
}

pub fn save_farm(farm: &FarmState) -> bool {
    match serde_json::to_string_pretty(farm) {
        Ok(json) => fs::write(save_path(), json).is_ok(),
        Err(_) => false,
    }
}