Simple 2D RPG made in C++ and SFML
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.9 KiB

#include "map.h"
void TileSet::Clear() {
while (this->tile.size() > 0) {
delete this->tile[this->tile.size() - 1];
this->tile.pop_back();
}
}
TileSet::~TileSet() {
this->Clear();
}
Map::Map()
{
this->tileSet = new TileSet();
this->layer1 = new Layer();
}
void Map::Render(sf::RenderWindow* window) {
sf::Sprite tile;
int index;
int width = this->layer1->width;
int height = this->layer1->height;
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
index = this->layer1->data[i][j];
if(index != 0) {
tile.setTexture(*this->tileSet->tile[index]);
tile.setPosition(sf::Vector2f(j * this->tileSet->tileWidth, i * this->tileSet->tileHeight));
window->draw(tile);
}
}
}
}
Map::~Map()
{
delete this->tileSet;
delete this->layer1;
}
//void drawMap(sf::RenderWindow* window)
//{
// sf::Sprite tile;
// int itr = 0;
// int location;
// int maxWidth = nearbyint((view.getCenter().x + view.getSize().x / 2) / map->tileSet->tileWidth) + 1;
// int minWidth = nearbyint((view.getCenter().x - view.getSize().x / 2) / map->tileSet->tileWidth) - 1;
// int maxHeight = nearbyint((view.getCenter().y + view.getSize().y / 2) / map->tileSet->tileHeight) + 1;
// int minHeight = nearbyint((view.getCenter().y - view.getSize().y / 2) / map->tileSet->tileHeight) - 1;
// for (int y = minHeight; y < maxHeight && y < map->height; y++)
// {
// if (y < 0)
// {
// y = 0;
// }
// for (int x = minWidth; x < maxWidth && x < map->width; x++)
// {
// if (x < 0)
// {
// x = 0;
// }
// location = map->data[y][x];
// if (location != 0)
// {
// tile.setTexture(*map->tileSet->data[location]);
// tile.setPosition(sf::Vector2f(x * map->tileSet->tileWidth, y * map->tileSet->tileHeight));
// window->draw(tile);
// }
// itr++;
// }
// }
//}