31 lines
841 B
C++
31 lines
841 B
C++
|
#include "effect_cycle.h"
|
||
|
|
||
|
void CycleEffect::changeEffect() {
|
||
|
Effect* new_effect;
|
||
|
do {
|
||
|
int new_id = random8(cycle_effects->size());
|
||
|
new_effect = cycle_effects->get(new_id);
|
||
|
} while (&new_effect == &effect);
|
||
|
effect = new_effect;
|
||
|
effectSince = millis();
|
||
|
}
|
||
|
|
||
|
boolean CycleEffect::can_be_shown_with_clock() {
|
||
|
return effect->can_be_shown_with_clock();
|
||
|
};
|
||
|
boolean CycleEffect::clock_as_mask() {
|
||
|
return effect->clock_as_mask();
|
||
|
};
|
||
|
|
||
|
void CycleEffect::loop() {
|
||
|
if (!effect) changeEffect(); // If this is the first run, we have to select an effect first!
|
||
|
effect->loop();
|
||
|
// Don't use EVERY_N_SECONDS(config_effect_cycle_time) here because that function isn't relly made
|
||
|
// to be used with changing values.
|
||
|
EVERY_N_SECONDS(1) {
|
||
|
if (effectSince + EFFECT_CYCLE_TIME*1000 < millis()) {
|
||
|
changeEffect();
|
||
|
}
|
||
|
}
|
||
|
}
|