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}