steel_core/entity/consume_effect/
mod.rs1mod apply_effects;
5mod clear_all_effects;
6mod play_sound;
7mod remove_effects;
8mod teleport_randomly;
9
10use std::sync::Arc;
11
12use steel_registry::consume_effect::ConsumeEffectData;
13
14pub use apply_effects::ApplyEffectsBehavior;
15pub use clear_all_effects::ClearAllEffectsBehavior;
16pub use play_sound::PlaySoundBehavior;
17pub use remove_effects::RemoveEffectsBehavior;
18pub use teleport_randomly::TeleportRandomlyBehavior;
19
20use crate::behavior::CONSUME_EFFECT_BEHAVIORS;
21use crate::entity::LivingEntity;
22use crate::world::World;
23
24pub trait ConsumeEffectBehavior: Send + Sync {
26 fn apply(&self, effect: &ConsumeEffectData, world: &Arc<World>, user: &dyn LivingEntity);
29}
30
31pub(crate) fn apply_consume_effect(
34 effect: &ConsumeEffectData,
35 world: &Arc<World>,
36 user: &dyn LivingEntity,
37) {
38 CONSUME_EFFECT_BEHAVIORS
39 .get_behavior(effect.effect_type())
40 .apply(effect, world, user);
41}