use bevy::prelude::*;
use bevy_auto_plugin;
use bevy_auto_plugin::prelude::{AutoPlugin, auto_plugin_build_hook, auto_system};
use immediate_stats::*;
fn main() {
App::new()
.add_plugins((MinimalPlugins, ImmediateStatsPlugin, SpeedPlugin))
.run();
}
#[derive(AutoPlugin)]
#[auto_plugin(impl_plugin_trait)]
struct SpeedPlugin;
#[derive(StatContainer, Component)]
#[auto_plugin_build_hook(plugin = SpeedPlugin, hook = ResetComponentHook)]
struct Speed(Stat);
#[auto_system(plugin = SpeedPlugin, schedule = Startup)]
fn init_speed(mut commands: Commands) {
commands.spawn(Speed(Stat::new(10))); }
#[auto_system(plugin = SpeedPlugin, schedule = Update, config(in_set = StatSystems::Modify))]
fn apply_modifiers(mut speeds: Query<&mut Speed>) {
for mut speed in &mut speeds {
speed.0 *= 2.0; speed.0 += 5; }
}
#[auto_system(plugin = SpeedPlugin, schedule = Update, config(in_set = StatSystems::Read))]
fn read_speed(speeds: Query<&Speed>) {
for speed in &speeds {
println!("The current speed is {}.", speed.0.total());
assert_eq!(speed.0.total(), 30); }
}