#include "effect_matrix.h" #include "my_color_palettes.h" #include "functions.h" MatrixEffectColumn::MatrixEffectColumn() { } MatrixEffectColumn::MatrixEffectColumn(Window* win, int xPos) : MatrixEffectColumn() { window = win; x = xPos; start(); y = random8(0, window->height); } void MatrixEffectColumn::start() { y=-1; length = random8(EFFECT_MATRIX_LENGTH_MIN, EFFECT_MATRIX_LENGTH_MAX); running = true; speed = random8(EFFECT_MATRIX_SPEED_MIN, EFFECT_MATRIX_SPEED_MAX); } void MatrixEffectColumn::advance() { y++; if (y-length > window->height) running = false; } void MatrixEffectColumn::draw() { for(int i=0; isetPixel(x, y-i, &color); } } void MatrixEffectColumn::loop() { if (!running) { if (random8() < 20) { // Start the column again. start(); } } else { if (millis() - last_move > speed) { advance(); last_move = millis(); } draw(); } } boolean MatrixEffect::can_be_shown_with_clock() { return true; }; MatrixEffect::MatrixEffect() { } void MatrixEffect::start() { _columns = new MatrixEffectColumn[LED_WIDTH]; for (int i=0; iclear(); for (int i=0; iwidth; i++) _columns[i].loop(); }