#![doc = include_str!("../README.md")]
mod bundle_inspector;
mod command;
mod component;
mod registry;
mod relation;
mod spawnable_list;
use bevy_app::{App, Plugin};
use bevy_ecs::prelude::*;
use bevy_reflect::Reflect;
use bevy_reflect::prelude::ReflectDefault;
use crate::bundle_inspector::BundleInspector;
pub use command::*;
pub use component::*;
pub use registry::*;
pub use relation::*;
pub use spawnable_list::*;
pub struct AlchemyPlugin;
impl Plugin for AlchemyPlugin {
fn build(&self, app: &mut App) {
app.register_type::<EffectMode>()
.register_type::<Effecting>()
.register_type::<EffectedBy>()
.register_type::<Lifetime>()
.register_type::<Delay>()
.register_type::<TimerMergeMode>()
.init_resource::<BundleInspector>()
.init_resource::<EffectMergeRegistry>()
.add_plugins(TimerPlugin)
.add_plugins(StackPlugin);
}
}
#[derive(Component, Reflect, Eq, PartialEq, Debug, Default, Copy, Clone)]
#[reflect(Component, PartialEq, Debug, Default, Clone)]
pub enum EffectMode {
#[default]
Stack,
Insert,
Merge,
}