Effects now use Constructor and Destructor to initialize or delete their data, instead of using start() and stop().

This commit is contained in:
2019-06-18 18:09:05 +02:00
parent 72cdb46451
commit 1912772da3
13 changed files with 58 additions and 60 deletions

View File

@ -2,17 +2,14 @@
#include "my_color_palettes.h"
#include "functions.h"
MatrixEffectColumn::MatrixEffectColumn() {
}
MatrixEffectColumn::MatrixEffectColumn(Window* win, int xPos) : MatrixEffectColumn() {
MatrixEffectColumn::MatrixEffectColumn(Window* win, int xPos) {
window = win;
x = xPos;
start();
restart();
y = random8(0, window->height);
}
void MatrixEffectColumn::start() {
void MatrixEffectColumn::restart() {
y=-1;
length = random8(EFFECT_MATRIX_LENGTH_MIN, EFFECT_MATRIX_LENGTH_MAX);
running = true;
@ -35,7 +32,7 @@ void MatrixEffectColumn::loop() {
if (!running) {
if (random8() < 20) {
// Start the column again.
start();
restart();
}
} else {
if (millis() - last_move > speed) {
@ -78,8 +75,8 @@ CRGB RandomMatrixEffectColumn::_getColor(uint8_t i) {
return color;
}
void RandomMatrixEffectColumn::start() {
MatrixEffectColumn::start();
void RandomMatrixEffectColumn::restart() {
MatrixEffectColumn::restart();
_hue = random8();
}
@ -95,24 +92,23 @@ void RandomMatrixEffectColumn::start() {
boolean MatrixEffect::can_be_shown_with_clock() { return true; };
MatrixEffect::MatrixEffect() {
_columns = new MatrixEffectColumn* [window->width];
_init();
}
void MatrixEffect::start() {
_columns = new MatrixEffectColumn* [window->width];
void MatrixEffect::_init() {
for (int i=0; i<window->width; i++) _columns[i] = new MatrixEffectColumn(window, i);
}
void RandomMatrixEffect::start() {
_columns = new MatrixEffectColumn* [window->width];
void RandomMatrixEffect::_init() {
for (int i=0; i<window->width; i++) _columns[i] = new RandomMatrixEffectColumn(window, i);
}
void RainbowMatrixEffect::start() {
_columns = new MatrixEffectColumn* [window->width];
void RainbowMatrixEffect::_init() {
for (int i=0; i<window->width; i++) _columns[i] = new RainbowMatrixEffectColumn(window, i);
}
void MatrixEffect::stop() {
MatrixEffect::~MatrixEffect() {
for (int i=0; i<window->width; i++) {
delete _columns[i];
}