An experimental, status effects-as-entities system for Bevy.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Additional test for merge mode.

+37
+37
tests/merge_mode.rs tests/effect_mode.rs
··· 13 13 14 14 let mut registry = EffectMergeRegistry::default(); 15 15 registry 16 + .register::<EffectStacks>(merge_effect_stacks) 16 17 .register::<Lifetime>(merge_effect_timer::<Lifetime>) 17 18 .register::<Delay>(merge_effect_timer::<Delay>); 18 19 ··· 101 102 assert!(effects.contains(&1)); 102 103 assert!(!effects.contains(&2)); 103 104 assert!(effects.contains(&3)); 105 + } 106 + 107 + #[test] 108 + fn effect_stacks_merge() { 109 + let mut world = init_world(); 110 + 111 + let target = world.spawn_empty().id(); 112 + world.commands().entity(target).with_effect(( 113 + EffectMode::Merge, 114 + MyEffect(0), 115 + EffectStacks::default(), 116 + )); 117 + world.commands().entity(target).with_effect(( 118 + EffectMode::Merge, 119 + MyEffect(1), 120 + EffectStacks::default(), 121 + Delay::default(), 122 + )); 123 + 124 + world.flush(); 125 + 126 + // Component with merge function: 127 + assert_eq!( 128 + world.query::<&EffectStacks>().single(&world).unwrap(), 129 + &EffectStacks(2), 130 + ); 131 + // Component without, and already present on effect. 132 + assert_eq!( 133 + world.query::<&MyEffect>().single(&world).unwrap(), 134 + &MyEffect(1) 135 + ); 136 + // Component without, and not present on effect. 137 + assert_eq!( 138 + world.query::<&Delay>().single(&world).unwrap(), 139 + &Delay::default() 140 + ) 104 141 } 105 142 106 143 #[test]