58 lines
1.2 KiB
C++
58 lines
1.2 KiB
C++
#include "TileSet.hpp"
|
|
#include "Debug.hpp"
|
|
#include "Types.hpp"
|
|
|
|
#define PADDING 0.0f
|
|
|
|
TSE::TileSet::TileSet(Texture *tex, int x, int y)
|
|
{
|
|
SetTexture(tex);
|
|
SetCount(x,y);
|
|
}
|
|
|
|
void TSE::TileSet::SetCount(int x, int y)
|
|
{
|
|
resx = x;
|
|
resy = y;
|
|
}
|
|
|
|
void TSE::TileSet::SetTexture(Texture *tex)
|
|
{
|
|
this->tex = tex;
|
|
}
|
|
|
|
void TSE::TileSet::GetSpriteAt(int x, int y, Sprite &s)
|
|
{
|
|
if(x < 0 || x >= resx || y < 0 || y >= resy)
|
|
{
|
|
TSE_ERROR("The sprite you are trying to access is out of range");
|
|
return;
|
|
}
|
|
|
|
Vector2 startpos = Vector2(((tex->size().x / resx) * (x + PADDING)) / tex->size().x, ((tex->size().y / resy) * (y + PADDING)) / tex->size().y);
|
|
Vector2 endpos = Vector2(((tex->size().x / resx) * ((x + 1) - PADDING)) / tex->size().x, ((tex->size().y / resy) * ((y + 1) - PADDING)) / tex->size().y);
|
|
|
|
s = Sprite(tex, Rect(startpos, endpos));
|
|
}
|
|
|
|
int TSE::TileSet::GetSpriteIdAt(int x, int y)
|
|
{
|
|
if(x < 0 || x >= resx || y < 0 || y >= resy)
|
|
{
|
|
TSE_ERROR("The sprite you are trying to access is out of range");
|
|
return -1;
|
|
}
|
|
|
|
return y * resx + x;
|
|
}
|
|
|
|
TSE::uint TSE::TileSet::GetTextueID()
|
|
{
|
|
return tex->GetTextureId();
|
|
}
|
|
|
|
TSE::Vector2 TSE::TileSet::GetCount()
|
|
{
|
|
return Vector2(resx, resy);
|
|
}
|