bevy_diesel 0.1.0

A generic ability engine framework for Bevy
Documentation
pub mod go_off;
pub mod repeater;
pub mod templates;

pub mod prelude {
    pub use crate::go_off;
    pub use crate::gearbox::DieselGearboxPlugin;
    pub use crate::gearbox::repeater::{OnComplete, Repeatable, Repeater, template_repeater};
    pub use crate::gearbox::templates::apply_sub_effect;
}

use bevy::prelude::*;

pub struct DieselGearboxPlugin<E: repeater::Repeatable>
where
    for<'a> <E as Event>::Trigger<'a>: Default,
{
    _marker: std::marker::PhantomData<E>,
}

impl<E: repeater::Repeatable> Default for DieselGearboxPlugin<E>
where
    for<'a> <E as Event>::Trigger<'a>: Default,
{
    fn default() -> Self {
        Self {
            _marker: std::marker::PhantomData,
        }
    }
}

impl<E: repeater::Repeatable> Plugin for DieselGearboxPlugin<E>
where
    for<'a> <E as Event>::Trigger<'a>: Default,
{
    fn build(&self, app: &mut App) {
        app.add_observer(repeater::repeater_observer::<E>)
            .add_observer(repeater::reset_repeater)
            .register_type::<repeater::Repeater>();
    }
}