|
|
|
#pragma once
|
|
|
|
#include "olcPixelGameEngine.h"
|
|
|
|
#include "Animation.h"
|
|
|
|
#include "olcUTIL_Animate2D.h"
|
|
|
|
|
|
|
|
struct Effect{
|
|
|
|
vf2d pos={0,0};
|
|
|
|
float lifetime=0;
|
|
|
|
float fadeout=0;
|
|
|
|
vf2d size={1,1};
|
|
|
|
Pixel col=WHITE;
|
|
|
|
vf2d spd={};
|
|
|
|
float rotation=0;
|
|
|
|
float rotationSpd=0;
|
|
|
|
bool additiveBlending=false;
|
|
|
|
Effect(vf2d pos,float lifetime,AnimationState animation,bool upperLevel,float size=1.0f,float fadeout=0.0f,vf2d spd={},Pixel col=WHITE,float rotation=0,float rotationSpd=0,bool additiveBlending=false);
|
|
|
|
Effect(vf2d pos,float lifetime,AnimationState animation,bool upperLevel,vf2d size={1,1},float fadeout=0.0f,vf2d spd={},Pixel col=WHITE,float rotation=0,float rotationSpd=0,bool additiveBlending=false);
|
|
|
|
virtual bool Update(float fElapsedTime);
|
|
|
|
Animate2D::Frame GetFrame();
|
|
|
|
virtual void Draw();
|
|
|
|
bool OnUpperLevel();
|
|
|
|
private:
|
|
|
|
Animate2D::Animation<AnimationState>animation;
|
|
|
|
Animate2D::AnimationState internal_animState;
|
|
|
|
float original_fadeoutTime;
|
|
|
|
bool upperLevel=false;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct Meteor:Effect{
|
|
|
|
Meteor(vf2d pos,float lifetime,AnimationState animation,bool upperLevel,vf2d size={1,1},float fadeout=0.0f,vf2d spd={},Pixel col=WHITE,float rotation=0,float rotationSpd=0,bool additiveBlending=false);
|
|
|
|
bool Update(float fElapsedTime)override;
|
|
|
|
void Draw()override;
|
|
|
|
};
|