71 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "effects.h"
 | |
| #include "my_fastled.h"
 | |
| #include <ErriezCRC32.h>
 | |
| #include "effect_bell.h"
 | |
| #include "effect_sinematrix3.h"
 | |
| #include "effect_big_clock.h"
 | |
| #include "effect_clock.h"
 | |
| #include "effect_static.h"
 | |
| #include "effect_animation.h"
 | |
| #include "effect_dynamic.h"
 | |
| #include "effect_matrix.h"
 | |
| #include "effect_twirl.h"
 | |
| #include "effect_cycle.h"
 | |
| #include "effect_confetti.h"
 | |
| #include "effect_snake.h"
 | |
| #include "effect_fire.h"
 | |
| #include "effect_firework.h"
 | |
| #include "effect_gol.h"
 | |
| #include "effect_pixelclock.h"
 | |
| 
 | |
| Effect* current_effect;
 | |
| 
 | |
| ClockEffect effect_clock;
 | |
| 
 | |
| Effect* select_effect(uint32_t code) {
 | |
| 	switch (code) {
 | |
| 		// use e.g. https://crccalc.com/ for the conversion of name to crc.
 | |
| 		case 0:  case 0xD682E3C8 /* sinematrix3            */ : return new Sinematrix3Effect();
 | |
| 		case 1:  case 0x90A887DA /* big_clock              */ : return new BigClockEffect();
 | |
| 		case 2:  case 0xBE7BBE92 /* clock                  */ : return new ClockEffect();
 | |
| 		case 3:  case 0x733BE087 /* bell                   */ : return new BellEffect(); //(new AnimationEffect("/bell.pia", 0x000000, 0, 0))->setFgColor(0xFFFF00);
 | |
| 		case 4:  case 0x2BBC5D43 /* off                    */ : return new StaticEffect(0x000000);
 | |
| 		case 5:  case 0x1D84F231 /* koopa                  */ : return new AnimationEffect("/koopa.pia", CRGB(0x000000), 0, 0);
 | |
| 		case 6:  case 0xAC43BCF1 /* couple_rain            */ : return new AnimationEffect("/couple_rain.pia", CRGB(0x000000), -8, -16);
 | |
| 		case 7:  case 0xF1B117F7 /* single_dynamic         */ : return new SingleDynamicEffect();
 | |
| 		case 8:  case 0xF52F2804 /* multi_dynamic          */ : return new MultiDynamicEffect();
 | |
| 		case 9:  case 0xF83341CF /* matrix                 */ : return new MatrixEffect();
 | |
| 		case 10: case 0xD2B79DD0 /* rainbow_matrix         */ : return new RainbowMatrixEffect();
 | |
| 		case 11: case 0xE8DD3433 /* random_matrix          */ : return new RandomMatrixEffect();
 | |
| 		case 12: case 0xB086D193 /* cycle                  */ : return new CycleEffect();
 | |
| 		case 13: case 0x2293EF9F /* twirl                  */ : return new TwirlEffect();
 | |
| 		case 14: case 0x60ECC3E6 /* heart                  */ : return new AnimationEffect("/heart.pia", CRGB(0x000000), 0, 0);
 | |
| 		case 15: case 0x42090A49 /* confetti               */ : return new ConfettiEffect();
 | |
| 		case 16: case 0x516D6B9E /* snake                  */ : return new SnakeEffect();
 | |
| 		case 17: case 0x58DE09CF /* fire                   */ : return new FireEffect();
 | |
| 		case 18: case 0x08BA9C08 /* firework               */ : return new FireworkEffect();
 | |
| 		case 19: case 0x14B85EAC /* gol                    */ : return new GolEffect();
 | |
| 		case 20: case 0xFA13015D /* cake                   */ : return new AnimationEffect("/cake.pia", CRGB(0x000000), 0, 0);
 | |
| 		case 21: case 0xA2B0D68B /* pixel_clock            */ : return new PixelClockEffect();
 | |
| 		case 22: case 0x2C0E6962 /* big_dynamic            */ : return new BigDynamicEffect();
 | |
| 		case 23: case 0xDA6F31A5 /* random_confetti        */ : return new RandomConfettiEffect();
 | |
| 		case 24: case 0x8325C1DF /* dvd                    */ : return new DvdEffect();
 | |
| 		default                                      : return NULL;
 | |
| 	};
 | |
| }
 | |
| 
 | |
| bool change_current_effect(String name) {
 | |
| 	Effect* new_effect = string_to_effect(name);
 | |
| 	if (new_effect == NULL) return false;
 | |
| 	delete current_effect;
 | |
| 	current_effect = new_effect;
 | |
| 	return true;
 | |
| }
 | |
| 
 | |
| const char* cycle_effects[] = {"sinematrix3", "multi_dynamic", "matrix", "confetti", "single_dynamic", "snake", "gol"};
 | |
| uint8_t cycle_effects_count = 7;
 | |
| 
 | |
| void setup_effects() {
 | |
| 	current_effect = new CycleEffect();
 | |
| }
 |