use crate::{
Nano9Plugin,
config::{Config, MemoryDir},
};
use bevy::{
app::{PluginGroup, PluginGroupBuilder},
asset::AssetPath,
audio::{AudioPlugin, Volume},
prelude::*,
};
#[derive(Debug, Default)]
pub struct Nano9Plugins {
pub config: Config,
pub config_path: Option<AssetPath<'static>>,
}
impl Nano9Plugins {
pub fn new(config: Config) -> Self {
Nano9Plugins {
config,
config_path: None,
}
}
}
impl PluginGroup for Nano9Plugins {
fn build(self) -> PluginGroupBuilder {
let group = PluginGroupBuilder::start::<Self>();
#[cfg(feature = "web-asset")]
let group = group.add(bevy_web_asset::WebAssetPlugin);
let group = group.add(MemoryDir::new("n9mem"));
let nano9_plugin = Nano9Plugin {
config: self.config,
config_path: self.config_path,
};
let group = group.add_group(
DefaultPlugins
.set(AudioPlugin {
global_volume: GlobalVolume {
volume: Volume::Linear(0.4),
},
..default()
})
.set(nano9_plugin.window_plugin()),
);
group.add(nano9_plugin)
}
}