Files
TSE/TSE_Core/src/elements/TileSet.cpp
2026-02-09 15:25:01 +01:00

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);
}