diff --git a/Cargo.lock b/Cargo.lock index 93a4a8e..b672488 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -98,6 +98,7 @@ dependencies = [ "bevy_derive", "bevy_ecs", "bevy_platform_support", + "bevy_reflect", "bevy_tasks", "bevy_utils", "cfg-if", @@ -127,6 +128,7 @@ dependencies = [ "bevy_ecs_macros", "bevy_platform_support", "bevy_ptr", + "bevy_reflect", "bevy_tasks", "bevy_utils", "bitflags", @@ -220,6 +222,7 @@ dependencies = [ "erased-serde", "foldhash", "serde", + "smallvec", "thiserror", "variadics_please", ] diff --git a/immediate_stats/Cargo.toml b/immediate_stats/Cargo.toml index 27c9ddf..071792b 100644 --- a/immediate_stats/Cargo.toml +++ b/immediate_stats/Cargo.toml @@ -14,8 +14,12 @@ bevy = ["bevy_ecs", "bevy_app", "bevy_reflect", "immediate_stats_macros/bevy"] bevy_butler = ["bevy", "bevy-butler", "immediate_stats_macros/bevy_butler"] [dependencies] -bevy_app = { version = "0.16.0-rc", default-features = false, optional = true } +bevy_app = { version = "0.16.0-rc", default-features = false, optional = true, features = [ + "bevy_reflect", +] } bevy-butler = { version = "0.6.1-alpha", optional = true } -bevy_ecs = { version = "0.16.0-rc", default-features = false, optional = true } +bevy_ecs = { version = "0.16.0-rc", default-features = false, optional = true, features = [ + "bevy_reflect", +] } bevy_reflect = { version = "0.16.0-rc", default-features = false, optional = true } immediate_stats_macros = { path = "../immediate_stats_macros", default-features = false } diff --git a/immediate_stats/src/bevy.rs b/immediate_stats/src/bevy.rs index 95a3d38..b7cc868 100644 --- a/immediate_stats/src/bevy.rs +++ b/immediate_stats/src/bevy.rs @@ -2,12 +2,25 @@ pub mod butler; use crate::StatContainer; +use bevy_app::{App, Plugin}; use bevy_ecs::component::Mutable; +use bevy_ecs::prelude::ReflectComponent; use bevy_ecs::prelude::{Component, Query, ResMut, Resource, Without}; +use bevy_reflect::Reflect; +use bevy_reflect::prelude::ReflectDefault; -/// Prevents all [`StatContainers`](StatContainer) from resetting. -#[derive(Component, Default)] +pub struct ImmediateStatesPlugin; + +impl Plugin for ImmediateStatesPlugin { + fn build(&self, app: &mut App) { + app.register_type::(); + } +} + +/// Prevents a [`StatContainers`](StatContainer) from resetting. +#[derive(Component, Reflect, Default, Eq, PartialEq)] #[component(storage = "SparseSet")] +#[reflect(Component, Default)] pub struct PauseStatReset; pub fn reset_component_modifiers + StatContainer>(