2023-06-30 15:44:41 -07:00
|
|
|
#pragma once
|
|
|
|
#include "Bullet.h"
|
2023-07-23 08:13:40 -05:00
|
|
|
#include "olcPixelGameEngine.h"
|
2023-06-30 15:44:41 -07:00
|
|
|
|
|
|
|
struct EnergyBolt:public Bullet{
|
|
|
|
float lastParticleSpawn=0;
|
2023-07-07 06:42:49 -05:00
|
|
|
EnergyBolt(vf2d pos,vf2d vel,float radius,int damage,bool upperLevel,bool friendly=false,Pixel col=WHITE);
|
2023-06-30 15:44:41 -07:00
|
|
|
void Update(float fElapsedTime)override;
|
2023-07-14 15:44:17 +00:00
|
|
|
bool PlayerHit(Player*player)override;
|
2023-07-05 05:34:21 -05:00
|
|
|
bool MonsterHit(Monster&monster)override;
|
2023-07-06 04:35:40 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
struct FireBolt:public Bullet{
|
|
|
|
float lastParticleSpawn=0;
|
2023-07-07 06:42:49 -05:00
|
|
|
FireBolt(vf2d pos,vf2d vel,float radius,int damage,bool upperLevel,bool friendly=false,Pixel col=WHITE);
|
2023-07-06 04:35:40 -05:00
|
|
|
void Update(float fElapsedTime)override;
|
2023-07-14 15:44:17 +00:00
|
|
|
bool PlayerHit(Player*player)override;
|
2023-07-06 04:35:40 -05:00
|
|
|
bool MonsterHit(Monster&monster)override;
|
2023-07-12 00:23:36 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
struct LightningBolt:public Bullet{
|
|
|
|
float lastParticleSpawn=0;
|
|
|
|
LightningBolt(vf2d pos,vf2d vel,float radius,int damage,bool upperLevel,bool friendly=false,Pixel col=WHITE);
|
|
|
|
void Update(float fElapsedTime)override;
|
2023-07-14 15:44:17 +00:00
|
|
|
bool PlayerHit(Player*player)override;
|
2023-07-12 00:23:36 -05:00
|
|
|
bool MonsterHit(Monster&monster)override;
|
2023-07-23 08:13:40 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
struct Arrow:public Bullet{
|
|
|
|
float travelDistance=0;
|
|
|
|
float finalDistance=0;
|
|
|
|
float acc=PI/2*250;
|
|
|
|
Arrow(vf2d pos,vf2d targetPos,vf2d vel,float radius,int damage,bool upperLevel,bool friendly=false,Pixel col=WHITE);
|
|
|
|
void Update(float fElapsedTime)override;
|
|
|
|
bool PlayerHit(Player*player)override;
|
|
|
|
bool MonsterHit(Monster&monster)override;
|
2023-07-25 18:37:12 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
struct ChargedArrow:public Bullet{
|
|
|
|
vf2d lastLaserPos;
|
|
|
|
ChargedArrow(vf2d pos,vf2d vel,float radius,int damage,bool upperLevel,bool friendly=false,Pixel col=WHITE);
|
|
|
|
void Update(float fElapsedTime)override;
|
|
|
|
bool PlayerHit(Player*player)override;
|
|
|
|
bool MonsterHit(Monster&monster)override;
|
2023-06-30 15:44:41 -07:00
|
|
|
};
|