poke_data/
assets.rs

1use crate::models::png_asset::PngAsset;
2use crate::models::pokemon::PokemonId;
3use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5use std::path::Path;
6
7#[derive(Serialize, Deserialize)]
8pub struct PokemonAssets {
9    pub official_artworks: HashMap<PokemonId, PngAsset>,
10}
11
12impl PokemonAssets {
13    pub fn load_from_path(compressed_data_path: &Path) -> Result<Self, Box<dyn std::error::Error>> {
14        let data = std::fs::read(compressed_data_path)?;
15        let decompressed_data = zstd::decode_all(data.as_slice())?;
16        Ok(bincode::deserialize(&decompressed_data)?)
17    }
18
19    pub fn load_from_bytes(bytes: &[u8]) -> Result<Self, Box<dyn std::error::Error>> {
20        Ok(bincode::deserialize(bytes)?)
21    }
22}