aboutsummaryrefslogtreecommitdiff
path: root/src/classes/assetinfo.rs
blob: 9fad90a0d2c8139f8c58b2c296f35e0c3ff1731b (plain)
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
use super::{FromValue, gameobject::GameObject, pptr::PPtr};
use crate::object::Value;
use anyhow::Result;
use serde::Serialize;

#[derive(Debug, Serialize)]
pub struct AssetInfo {
    pub preload_index: i32,
    pub preload_size: i32,
    pub asset: PPtr<GameObject>,
}
impl FromValue for AssetInfo {
    fn from_value(v: Value) -> Result<Self> {
        let mut fields = v.as_class("AssetInfo").unwrap();
        Ok(AssetInfo {
            preload_index: fields["preloadIndex"].as_i32().unwrap(),
            preload_size: fields["preloadSize"].as_i32().unwrap(),
            asset: fields
                .remove("asset")
                .unwrap()
                .parse::<PPtr>()
                .unwrap()
                .cast(),
        })
    }
}