Systems are working correctly, but needs cleaning

This commit is contained in:
Kayne Ruse
2013-10-04 00:34:57 +10:00
parent 46efbfbe9a
commit a88a1f7cf7
4 changed files with 88 additions and 17 deletions
+6 -13
View File
@@ -40,18 +40,11 @@ SDL_Surface* TileSheet::LoadSurface(std::string fname, Uint16 w, Uint16 h) {
//cache the name
name = truncatePath(fname);
}
SDL_Surface* TileSheet::SetSurface(SDL_Surface* const ptr, Uint16 w, Uint16 h) {
//setup the image
image.SetSurface(ptr);
image.SetClipW(w);
image.SetClipH(h);
//get the tile counts
xCount = image.GetSurface()->w / w;
yCount = image.GetSurface()->h / h;
totalCount = xCount * yCount;
//set the range
begin = rangeEnd;
end = begin + totalCount;
rangeEnd += totalCount;
}
SDL_Surface* TileSheet::GetSurface() {
@@ -69,8 +62,8 @@ void TileSheet::DrawTo(SDL_Surface* const dest, int x, int y, int tileIndex) {
if (!InRange(tileIndex)) {
throw(std::runtime_error("Tile index out of range of Tile Sheet"));
}
Sint16 clipX = tileIndex % xCount * image.GetClipW();
Sint16 clipY = tileIndex / xCount * image.GetClipH();
Sint16 clipX = (tileIndex-begin) % xCount * image.GetClipW();
Sint16 clipY = (tileIndex-begin) / xCount * image.GetClipH();
image.SetClipX(clipX);
image.SetClipY(clipY);