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.

48 lines
1.5 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->ground1 = new Layer();
this->above1 = new Layer();
this->collision = new Layer();
this->tileSet = new TileSet();
}
void Map::Render(sf::RenderWindow* window) {
// Get render section
sf::Vector2f renderWidth = sf::Vector2f((window->getView().getCenter().x - window->getSize().x / 2) / this->tilewidth,
(window->getView().getCenter().x + window->getSize().x / 2) / this->tilewidth);
sf::Vector2f renderHeight = sf::Vector2f((window->getView().getCenter().y - window->getSize().y / 2) / this->tileheight,
(window->getView().getCenter().y + window->getSize().y / 2) / this->tileheight);
// Render map
int index;
sf::Sprite tile;
for (int y = renderHeight.x; y < renderHeight.y; y++) {
for (int x = renderWidth.x; x < renderWidth.y; x++) {
index = this->ground1->data[y][x];
if(index != 0) {
tile.setTexture(*this->tileSet->tile[index]);
tile.setPosition(sf::Vector2f(x * this->tileSet->tileWidth, y * this->tileSet->tileHeight));
window->draw(tile);
}
}
}
}
Map::~Map() {
delete this->tileSet;
delete this->ground1;
delete this->above1;
delete this->collision;
}