diff options
Diffstat (limited to 'src/floor.cpp')
| -rw-r--r-- | src/floor.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/floor.cpp b/src/floor.cpp index 8482b48..b8503ec 100644 --- a/src/floor.cpp +++ b/src/floor.cpp @@ -3,6 +3,7 @@ #include <SFML/Graphics/RectangleShape.hpp> #include <SFML/Graphics/RenderWindow.hpp> #include <SFML/Graphics/Sprite.hpp> +#include <SFML/System/Angle.hpp> #include <SFML/System/Vector2.hpp> #include <algorithm> #include <iterator> @@ -16,6 +17,21 @@ namespace silly::editor { sf::Sprite s(t->tile->texture); s.setPosition({t->position.x * (float)TILE_WIDTH, t->position.y * (float)TILE_HEIGHT}); + s.setRotation(sf::degrees(t->rotation)); + + sf::Vector2f origin; + sf::Vector2u size = t->tile->texture.getSize(); + + if (t->rotation == 90.0f) { + origin.y = size.y; + } else if (t->rotation == 180.0f) { + origin.x = size.x; + origin.y = size.y; + } else if (t->rotation == 270.0f) { + origin.x = size.x; + } + + s.setOrigin(origin); window.draw(s); } @@ -23,13 +39,14 @@ namespace silly::editor { } void TileFloor::place_tile(std::shared_ptr<TilesetTile> &tile, - const sf::Vector2i &position) { + const sf::Vector2i &position, + const float &rotation) { 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}); + layer.tiles.push_back({tile, position, rotation}); } } void TileFloor::remove_tile(const sf::Vector2i &position) { |
