Rewrote effect firework. Now it kinda works.
This commit is contained in:
@ -1,7 +1,61 @@
|
||||
#pragma once
|
||||
|
||||
#include "prototypes.h"
|
||||
#include "functions.h"
|
||||
#include "Effect.h"
|
||||
|
||||
class FireworkEffect : public Effect {
|
||||
void loop();
|
||||
enum FireworkDotType { FIREWORK_DOT_NONE, FIREWORK_DOT_SHELL, FIREWORK_DOT_SPARK };
|
||||
|
||||
#define EFFECT_FIREWORK_DRAG 255
|
||||
#define EFFECT_FIREWORK_BOUNCE 200
|
||||
#define EFFECT_FIREWORK_GRAVITY 10
|
||||
#define EFFECT_FIREWORK_SPARKS 12
|
||||
|
||||
class FireworkEffect;
|
||||
|
||||
class FireworkEffectDot {
|
||||
private:
|
||||
Window* _window;
|
||||
FireworkEffect* _main;
|
||||
accum88 _x;
|
||||
accum88 _y;
|
||||
saccum78 _xv;
|
||||
saccum78 _yv;
|
||||
accum88 _r;
|
||||
CRGB _color;
|
||||
|
||||
void _screenscale(accum88 a, byte n, byte& screen, byte& screenerr);
|
||||
int16_t _scale15by8_local(int16_t i, fract8 scale);
|
||||
public:
|
||||
byte show;
|
||||
FireworkDotType type;
|
||||
|
||||
FireworkEffectDot(Window* w, FireworkEffect* e);
|
||||
void draw();
|
||||
void move();
|
||||
void ground_launch();
|
||||
void sky_burst(accum88 basex, accum88 basey, saccum78 basedv, CRGB& basecolor);
|
||||
};
|
||||
|
||||
class FireworkEffect : public Effect {
|
||||
private:
|
||||
Window* window = new Window(0, 0, LED_WIDTH, LED_HEIGHT-6);
|
||||
bool _skyburst = 0;
|
||||
|
||||
accum88 _burst_x;
|
||||
accum88 _burst_y;
|
||||
saccum78 _burst_xv;
|
||||
saccum78 _burst_yv;
|
||||
CRGB _burst_color;
|
||||
|
||||
FireworkEffectDot* _dot;
|
||||
FireworkEffectDot* _sparks[EFFECT_FIREWORK_SPARKS];
|
||||
public:
|
||||
FireworkEffect();
|
||||
~FireworkEffect();
|
||||
void skyburst(accum88 x, accum88 y, saccum78 xv, saccum78 yv, CRGB c);
|
||||
boolean supports_window = true;
|
||||
boolean can_be_shown_with_clock();
|
||||
void loop();
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user