35 lines
907 B
C++
35 lines
907 B
C++
#include "Tileset.h"
|
|
#include "Renderer.h"
|
|
|
|
Tileset::Tileset(Renderer* renderer, std::string imgPath, int imgWidth, int imgHeight, int tileWidth, int tileHeight) {
|
|
int tilesX = imgWidth / tileWidth;
|
|
int tilesY = imgHeight / tileHeight;
|
|
amount = tilesX*tilesY;
|
|
sprites = new Sprite[amount];
|
|
if (renderer->LoadTexture(imgPath) != nullptr) {
|
|
for (int i = 0; i < amount; i++) {
|
|
int x = i%tilesX * tileWidth;
|
|
int y = (i / tilesX) * tileHeight;
|
|
sprites[i] = renderer->CreateSprite(imgPath, x, y, tileWidth, tileHeight);
|
|
}
|
|
}
|
|
else {
|
|
amount = -1; // Prevents it from returning non-existing sprite objects.
|
|
}
|
|
}
|
|
|
|
Tileset::~Tileset() {
|
|
delete sprites;
|
|
}
|
|
|
|
int Tileset::GetAmount() {
|
|
return amount;
|
|
}
|
|
|
|
Sprite * Tileset::GetSprite(int tileId) {
|
|
if (tileId >= 0 && tileId < amount) {
|
|
return &sprites[tileId];
|
|
}
|
|
return nullptr;
|
|
}
|