#include "floor.hpp" #include #include #include #include #include #include #include "tileset.hpp" namespace silly::editor { void TileFloor::render(sf::RenderWindow &window) const { for (auto l = this->layers.begin(); l != this->layers.end(); ++l) { for (auto t = l->tiles.begin(); t != l->tiles.end(); ++t) { sf::Sprite s(t->tile->texture); s.setPosition({t->position.x * (float)TILE_WIDTH, t->position.y * (float)TILE_HEIGHT}); window.draw(s); } } } void TileFloor::place_tile(std::shared_ptr &tile, const sf::Vector2i &position) { TileLayer &layer = this->layers.at(tile->type); if (!std::any_of( layer.tiles.begin(), layer.tiles.end(), [&position](const Tile &t) { return t.position == position; })) { layer.tiles.push_back({position, tile}); } } void TileFloor::remove_tile(const sf::Vector2i &position) { TileLayer &layer = this->layers.at(this->activeLayerIndex); layer.tiles.resize(std::distance( layer.tiles.begin(), std::remove_if( layer.tiles.begin(), layer.tiles.end(), [&position](const Tile &t) { return t.position == position; }))); } const int TileFloor::get_width() const { return this->width; } const int TileFloor::get_height() const { return this->height; } }