use super::*;
pub(crate) fn plugin(_app: &mut App) {}
#[derive(Clone, Asset, Debug, Reflect)]
pub struct Pico8Asset {
#[cfg(feature = "scripting")]
pub scripts: Vec<Handle<bevy_mod_scripting::asset::ScriptAsset>>,
pub(crate) palettes: Vec<Palette>,
pub(crate) border: Handle<Image>,
pub(crate) sprite_sheets: Vec<Handle<SpriteSheet>>,
pub(crate) maps: Vec<SpriteMap>,
pub(crate) font: Vec<N9Font>,
pub(crate) audio_banks: Vec<Handle<AudioBank>>,
pub(crate) meshes: Vec<MeshHandle>,
}
#[derive(Clone, Debug, Reflect)]
pub struct N9Font {
pub handle: Handle<Font>,
}
impl Pico8Asset {
pub fn sprite_map(&self, map_index: Option<usize>) -> Result<&SpriteMap, Error> {
let index = map_index.unwrap_or(0);
self.maps
.get(index)
.ok_or(Error::NoSuch(format!("map index {index}").into()))
}
pub fn sprite_map_mut(&mut self, map_index: Option<usize>) -> Result<&mut SpriteMap, Error> {
let index = map_index.unwrap_or(0);
self.maps
.get_mut(index)
.ok_or(Error::NoSuch(format!("map index {index}").into()))
}
}
impl FromWorld for Pico8Asset {
fn from_world(world: &mut World) -> Self {
let asset_server = world.resource::<AssetServer>();
Pico8Asset {
#[cfg(feature = "scripting")]
scripts: vec![],
palettes: vec![Palette::from_slice(&crate::pico8::PALETTE)],
border: asset_server.load_with_settings(PICO8_BORDER, pixel_art_settings),
font: vec![N9Font {
handle: asset_server.load(PICO8_FONT),
}],
audio_banks: Vec::new(),
sprite_sheets: Vec::new(),
maps: Vec::new(),
meshes: Vec::new(),
}
}
}