|
|
- #if GARLAND_SUPPORT
-
- #include "../anim.h"
- #include "../color.h"
- #include "../palette.h"
-
- #define SPARK_PROB 3 //probability of spark when in idle plase
-
- //------------------------------------------------------------------------------
- class AnimSparkr : public Anim {
- public:
- AnimSparkr() : Anim("Sparkr") {
- }
- void SetupImpl() override {
- glowSetUp();
- phase = 0;
- curColor = palette->getRndInterpColor();
- prevColor = palette->getRndInterpColor();
- initSeq();
- shuffleSeq();
- }
-
- void Run() override {
- for (int i = 0; i < numLeds; ++i) {
- byte pos = seq[i];
-
- leds[pos] = (i > phase) ? prevColor
- : (i == phase) ? sparkleColor
- : curColor;
- glowForEachLed(i);
- }
- glowRun();
-
- if (phase > numLeds) {
- if (secureRandom(SPARK_PROB) == 0) {
- int i = (int)rngb() * numLeds / 256;
- leds[i] = sparkleColor;
- }
- }
-
- phase++;
- if (phase > 2 * numLeds) {
- phase = 0;
- prevColor = curColor;
- curColor = palette->getContrastColor(prevColor);
- shuffleSeq();
- }
- }
- };
-
- #endif // GARLAND_SUPPORT
|