use std::marker::PhantomData;
use bevy::{
ecs::schedule::States,
prelude::*,
};
use crate::{
animation::AnimationPlugin,
audio::AudioPlugin,
camera::CameraPlugin,
cursor::CursorPlugin,
interactives::InteractivesPlugin,
inventory::InventoryPlugin,
scene::SceneManagerPlugin,
state::WorldStatePlugin,
textdisplay::TextDisplayPlugin,
};
pub struct AdventurePlugin<S>(PhantomData<S>);
impl<S> Default for AdventurePlugin<S> {
fn default() -> Self {
Self(PhantomData)
}
}
impl<S> Plugin for AdventurePlugin<S>
where
S: States,
{
fn build(&self, app: &mut App) {
app .add_plugins((
AnimationPlugin,
AudioPlugin,
CameraPlugin,
CursorPlugin,
InteractivesPlugin::<S>::default(),
InventoryPlugin,
SceneManagerPlugin,
TextDisplayPlugin,
WorldStatePlugin,
));
}
}