You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
VirusAttack/olcCodeJam2023Entry/VirusAttack.h

75 lines
1.9 KiB

#include "olcPixelGameEngine.h"
#include "olcSoundWaveEngine.h"
#include "olcPGEX_TransformedView.h"
#include "Unit.h"
#include "Constant.h"
#include "Image.h"
#include "DeathAnimation.h"
#include "olcPGEX_AudioListener.h"
#include "olcPGEX_AudioSource.h"
#include "Sound.h"
#include "DebuffIcon.h"
#include "CollectionPoint.h"
struct Letter{
vf2d pos;
float spd;
char c;
};
struct Resources{
int health=0;
int atkSpd=0;
int moveSpd=0;
int range=0;
int procedure=0;
};
class VirusAttack : public olc::PixelGameEngine
{
private:
std::vector<std::shared_ptr<Unit>>units;
std::vector<std::shared_ptr<CollectionPoint>>collectionPoints;
std::vector<std::unique_ptr<DeathAnimation>>deathAnimations;
std::vector<DebuffIcon>debuffIcons;
std::map<Image,std::unique_ptr<Renderable>>IMAGES;
std::map<Sound,std::unique_ptr<Audio>>SOUNDS;
olcPGEX_AudioListener AL;
Audio*bgm;
Resources player_resources,enemy_resources;
TileTransformedView game;
float matrixTimer=0;
float updatePixelsTimer=0;
const std::array<char,16>matrixLetters={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',};
std::vector<Letter>activeLetters;
vf2d startingDragPos=CONSTANT::UNSELECTED;
void HandleDraggingSelection();
void DrawSelectionRectangle();
void HandleRightClickMove();
void CollisionChecking(std::shared_ptr<Unit>u,std::shared_ptr<Unit>u2);
void IdentifyClosestTarget(std::weak_ptr<Unit>&closestUnit,float&closestDist,std::shared_ptr<Unit>u,std::shared_ptr<Unit>u2);
vf2d GetWorldMousePos();
void HandlePanAndZoom(float fElapsedTime);
void DrawMinimap();
void HandleMinimapClick();
void InitializeImages();
void UpdateMatrixTexture(float fElapsedTime);
void RenderCollectionPoints(CollectionPoint*cp);
void RenderFogOfWar();
void InitializeSounds();
void DrawResourceBar();
public:
VirusAttack();
public:
bool OnUserCreate() override;
bool OnUserUpdate(float fElapsedTime) override;
};