parent
84881f1706
commit
a413e45842
@ -0,0 +1,108 @@ |
|||||||
|
#include "Unit.h" |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BasicUnit::BasicUnit(vf2d pos,Renderable&img,bool friendly) |
||||||
|
:Unit({ |
||||||
|
{HEALTH,4}, |
||||||
|
{RANGE,2}, |
||||||
|
{ATKSPD,2}, |
||||||
|
{MOVESPD,3}, |
||||||
|
{PROCEDURE,1}, |
||||||
|
},pos,img,friendly){} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Unit::Unit(std::vector<Memory>memory,vf2d pos,Renderable&img,bool friendly) |
||||||
|
:pos(pos),img(img),friendly(friendly){ |
||||||
|
int marker=0; |
||||||
|
for(Memory&mem:memory){ |
||||||
|
for(int i=0;i<mem.size;i++){ |
||||||
|
this->memory.push_back(true); |
||||||
|
} |
||||||
|
switch(mem.type){ |
||||||
|
case HEALTH:{ |
||||||
|
health.index=marker; |
||||||
|
health.size=mem.size; |
||||||
|
}break;
|
||||||
|
case RANGE:{ |
||||||
|
range.index=marker; |
||||||
|
range.size=mem.size; |
||||||
|
}break;
|
||||||
|
case ATKSPD:{ |
||||||
|
atkSpd.index=marker; |
||||||
|
atkSpd.size=mem.size; |
||||||
|
}break;
|
||||||
|
case MOVESPD:{ |
||||||
|
moveSpd.index=marker; |
||||||
|
moveSpd.size=mem.size; |
||||||
|
}break;
|
||||||
|
case PROCEDURE:{ |
||||||
|
procedure.index=marker; |
||||||
|
procedure.size=mem.size; |
||||||
|
}break;
|
||||||
|
} |
||||||
|
marker+=mem.size; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void Unit::Draw(PixelGameEngine*pge){ |
||||||
|
pge->DrawRotatedDecal(pos,img.Decal(),0,img.Sprite()->Size()/2); |
||||||
|
} |
||||||
|
|
||||||
|
int Unit::GetBits(Marker&m){ |
||||||
|
int activeBits=0; |
||||||
|
for(int i=0;i<m.size;i++){ |
||||||
|
if(memory[i+m.index]){ |
||||||
|
activeBits++; |
||||||
|
} |
||||||
|
} |
||||||
|
return activeBits; |
||||||
|
} |
||||||
|
|
||||||
|
int Unit::GetHealth(){ |
||||||
|
return GetBits(health); |
||||||
|
} |
||||||
|
|
||||||
|
int Unit::GetRange(){ |
||||||
|
return GetBits(range); |
||||||
|
} |
||||||
|
|
||||||
|
int Unit::GetAtkSpd(){ |
||||||
|
return GetBits(atkSpd); |
||||||
|
} |
||||||
|
|
||||||
|
int Unit::GetMoveSpd(){ |
||||||
|
return GetBits(moveSpd); |
||||||
|
} |
||||||
|
|
||||||
|
int Unit::GetProcedure(){ |
||||||
|
return GetBits(procedure); |
||||||
|
} |
||||||
|
|
||||||
|
int Unit::GetMemorySize(){ |
||||||
|
return memory.size(); |
||||||
|
} |
||||||
|
|
||||||
|
void BasicUnit::Update(float fElapsedTime){ |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
Unit& operator <<(Unit&u,const int n){ |
||||||
|
for(int i=0;i<u.GetMemorySize()-1;i++){ |
||||||
|
u.memory[i]=u.memory[i+1]; |
||||||
|
} |
||||||
|
u.memory[u.GetMemorySize()-1]=0; |
||||||
|
return u; |
||||||
|
} |
||||||
|
|
||||||
|
Unit& operator >>(Unit&u,const int n){ |
||||||
|
for(int i=1;i<u.GetMemorySize();i++){ |
||||||
|
u.memory[i]=u.memory[i-1]; |
||||||
|
} |
||||||
|
u.memory[0]=0; |
||||||
|
return u; |
||||||
|
} |
@ -0,0 +1,51 @@ |
|||||||
|
#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; |
||||||
|
virtual void Update(float fElapsedTime)=0; |
||||||
|
virtual void Draw(PixelGameEngine*pge); |
||||||
|
protected: |
||||||
|
vf2d pos; |
||||||
|
bool friendly; |
||||||
|
Renderable&img; |
||||||
|
Marker health; |
||||||
|
Marker range; |
||||||
|
Marker atkSpd; |
||||||
|
Marker moveSpd; |
||||||
|
Marker procedure; |
||||||
|
private: |
||||||
|
int GetBits(Marker&m); |
||||||
|
}; |
||||||
|
|
||||||
|
struct BasicUnit:Unit{ |
||||||
|
BasicUnit(vf2d pos,Renderable&img,bool friendly=false); |
||||||
|
void Update(float fElapsedTime)override; |
||||||
|
}; |
Loading…
Reference in new issue