This commit is contained in:
@ -1,20 +1,20 @@
|
||||
#include "effect_cycle.h"
|
||||
|
||||
void CycleEffect::changeEffect() {
|
||||
int new_id;
|
||||
if (EFFECT_CYCLE_RANDOM) {
|
||||
do {
|
||||
new_id = random8(cycle_effects->size());
|
||||
} while (new_id == effect_id);
|
||||
} else {
|
||||
new_id = (effect_id + 1) % cycle_effects->size();
|
||||
}
|
||||
LOG("CycleEffect * Changing effect from #"); LOG(effect_id); LOG(" to #"); LOGln(new_id);
|
||||
if (effect) effect->stop();
|
||||
effect = cycle_effects->get(new_id);
|
||||
effect->start();
|
||||
effect_id = new_id;
|
||||
effectSince = millis();
|
||||
int new_id;
|
||||
if (EFFECT_CYCLE_RANDOM) {
|
||||
do {
|
||||
new_id = random8(cycle_effects->size());
|
||||
} while (new_id == effect_id);
|
||||
} else {
|
||||
new_id = (effect_id + 1) % cycle_effects->size();
|
||||
}
|
||||
LOG("CycleEffect * Changing effect from #"); LOG(effect_id); LOG(" to #"); LOGln(new_id);
|
||||
if (effect) effect->stop();
|
||||
effect = cycle_effects->get(new_id);
|
||||
effect->start();
|
||||
effect_id = new_id;
|
||||
effectSince = millis();
|
||||
}
|
||||
|
||||
void CycleEffect::start() {
|
||||
@ -23,25 +23,25 @@ void CycleEffect::start() {
|
||||
}
|
||||
|
||||
void CycleEffect::stop() {
|
||||
effect_id = -1;
|
||||
effect_id = -1;
|
||||
if (effect) effect->stop();
|
||||
}
|
||||
|
||||
boolean CycleEffect::can_be_shown_with_clock() {
|
||||
return effect->can_be_shown_with_clock();
|
||||
return effect->can_be_shown_with_clock();
|
||||
};
|
||||
boolean CycleEffect::clock_as_mask() {
|
||||
return effect->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();
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user