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/Unit.h

63 lines
1.1 KiB

#pragma once
#include "olcPixelGameEngine.h"
struct Marker{
size_t index;
size_t size;
};
enum MemoryType{
HEALTH,
RANGE,
ATKSPD,
MOVESPD,
PROCEDURE
};
struct Memory{
MemoryType type;
int size;
};
struct Unit{
public:
Unit(std::vector<Memory>memory,vf2d pos,Renderable&img,bool friendly=false);
int GetHealth();
int GetRange();
int GetAtkSpd();
int GetMoveSpd();
int GetProcedure();
int GetMemorySize();
std::vector<bool>memory;
void Update(float fElapsedTime);
virtual void Attack(Unit&victim)=0;
virtual void Draw(PixelGameEngine*pge);
bool IsFriendly();
bool IsSelected();
void Select();
void Deselect();
vf2d GetPos();
protected:
vf2d pos;
bool friendly;
Renderable&img;
Marker health;
Marker range;
Marker atkSpd;
Marker moveSpd;
Marker procedure;
private:
int GetBits(Marker&m);
bool selected=false;
};
struct BasicUnit:Unit{
BasicUnit(vf2d pos,Renderable&img,bool friendly=false);
void Attack(Unit&victim)override;
};
struct BasicUnit2:Unit{
BasicUnit2(vf2d pos,Renderable&img,bool friendly=false);
void Attack(Unit&victim)override;
};