oxygengine-visual-novel 0.46.1

Visual Novel module for Oxygengine
Documentation
use crate::story::Story;
use core::{
    assets::protocol::{AssetLoadResult, AssetProtocol},
    prefab::Prefab,
};
use std::str::from_utf8;

pub struct VnStoryAsset(Story);

impl VnStoryAsset {
    pub fn get(&self) -> &Story {
        &self.0
    }
}

pub struct VnStoryAssetProtocol;

impl AssetProtocol for VnStoryAssetProtocol {
    fn name(&self) -> &str {
        "vn-story"
    }

    fn on_load(&mut self, data: Vec<u8>) -> AssetLoadResult {
        let data = from_utf8(&data).unwrap();
        match Story::from_prefab_str(data) {
            Ok(result) => AssetLoadResult::Data(Box::new(VnStoryAsset(result))),
            Err(error) => AssetLoadResult::Error(format!(
                "Error loading visual novel story asset: {:?}",
                error
            )),
        }
    }
}