#if GARLAND_SUPPORT
|
|
|
|
#include "../anim.h"
|
|
#include "../palette.h"
|
|
|
|
//------------------------------------------------------------------------------
|
|
class AnimWaves : public Anim {
|
|
private:
|
|
int bra_phase;
|
|
int bra_phase_speed;
|
|
byte bra_speed;
|
|
byte bra_min;
|
|
int sign;
|
|
|
|
public:
|
|
AnimWaves() : Anim("Waves") {
|
|
}
|
|
|
|
void SetupImpl() override {
|
|
curColor = palette->getRndInterpColor().max_bright();
|
|
glowSetUp();
|
|
sign = braPhaseSpd > 128 ? -1 : 1;
|
|
bra_phase = secureRandom(255);
|
|
bra_phase_speed = secureRandom(2, 5);
|
|
bra_speed = secureRandom(4, 12);
|
|
bra_min = secureRandom(20, 30);
|
|
}
|
|
|
|
void Run() override {
|
|
int bra = bra_phase;
|
|
int8_t bra_inc = -sign * bra_speed;
|
|
|
|
for (int i = 0; i < numLeds; ++i) {
|
|
leds[i] = curColor;
|
|
glowForEachLed(i);
|
|
leds[i] = leds[i].brightness((byte)bra);
|
|
bra += bra_inc;
|
|
if (bra > 255 || bra < bra_min) {
|
|
bra_inc = -bra_inc;
|
|
bra = bra > 255 ? 255 : bra_min;
|
|
}
|
|
}
|
|
|
|
glowRun();
|
|
|
|
bra_phase += bra_phase_speed;
|
|
if (bra_phase > 255 || bra_phase < bra_min) {
|
|
bra_phase_speed = -bra_phase_speed;
|
|
sign = -sign;
|
|
bra_phase = bra_phase > 255 ? 255 : bra_min;
|
|
}
|
|
}
|
|
};
|
|
|
|
#endif // GARLAND_SUPPORT
|