use bevy::prelude::*;
use immediate_stats::*;
fn main() {
App::new()
.add_plugins((MinimalPlugins, ImmediateStatsPlugin, SpeedPlugin))
.run();
}
struct SpeedPlugin;
impl Plugin for SpeedPlugin {
fn build(&self, app: &mut App) {
app.add_plugins(
ResetComponentPlugin::<Speed>::new(), )
.add_systems(Startup, init_speed)
.add_systems(
Update,
(
apply_modifiers.in_set(StatSystems::Modify),
read_speed.in_set(StatSystems::Read),
),
);
}
}
#[derive(StatContainer, Component)]
struct Speed(Stat);
fn init_speed(mut commands: Commands) {
commands.spawn(Speed(Stat::new(10))); }
fn apply_modifiers(mut speeds: Query<&mut Speed>) {
for mut speed in &mut speeds {
speed.0 *= 2.0; speed.0 += 5; }
}
fn read_speed(speeds: Query<&Speed>) {
for speed in &speeds {
println!("The current speed is {}.", speed.0.total());
assert_eq!(speed.0.total(), 30); }
}