use std::fmt::Debug;
use bevy::prelude::*;
use bevy_gauge::prelude::{AttributesMut, ModifierSet};
use crate::effect::GoOff;
#[derive(Component, Clone, Debug, Default, Deref, DerefMut)]
pub struct AttributeModifiers(pub ModifierSet);
pub fn modifier_set_observer<P: Clone + Copy + Send + Sync + Default + Debug + 'static>(
go_off: On<GoOff<P>>,
q_attribute_modifiers: Query<&AttributeModifiers>,
mut attributes: AttributesMut,
) {
let trigger_entity = go_off.entity;
let Ok(modifier_set) = q_attribute_modifiers.get(trigger_entity) else {
return;
};
for target in go_off.targets.iter() {
if let Some(target_entity) = target.entity {
modifier_set.apply(target_entity, &mut attributes);
}
}
}