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 {
27 fn apply(&self, effect: &ConsumeEffectData, world: &Arc<World>, user: &dyn LivingEntity);
30}
31
32pub(crate) fn apply_consume_effect(
35 effect: &ConsumeEffectData,
36 world: &Arc<World>,
37 user: &dyn LivingEntity,
38) {
39 CONSUME_EFFECT_BEHAVIORS
40 .get_behavior(effect.effect_type())
41 .apply(effect, world, user);
42}