From 38637328ef7627d495a49312e67c9ec363cc450e Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sat, 1 Feb 2025 23:35:25 +0500 Subject: fix: tiles were only removed on the 1st layer --- src/editor.cpp | 13 +++++++------ src/floor.cpp | 5 +++-- src/floor.hpp | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/editor.cpp b/src/editor.cpp index 1929f7f..4fd9dad 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -39,12 +39,13 @@ namespace silly::editor { (ry < mousePosition.y && mousePosition.y < ry + 16)) { sf::Vector2i pos(x, y); - if (sf::Mouse::isButtonPressed(sf::Mouse::Button::Left) && - this->selectedTile.has_value()) { - this->floor.place_tile(this->selectedTile.value(), pos, - this->rotation); - } else if (sf::Mouse::isButtonPressed(sf::Mouse::Button::Right)) { - this->floor.remove_tile(pos); + if (this->selectedTile.has_value()) { + auto tile = this->selectedTile.value(); + if (sf::Mouse::isButtonPressed(sf::Mouse::Button::Left)) { + this->floor.place_tile(tile, pos, this->rotation); + } else if (sf::Mouse::isButtonPressed(sf::Mouse::Button::Right)) { + this->floor.remove_tile(tile->type, pos); + } } } } diff --git a/src/floor.cpp b/src/floor.cpp index 6632b6a..aacf77e 100644 --- a/src/floor.cpp +++ b/src/floor.cpp @@ -57,8 +57,9 @@ namespace silly::editor { layer.tiles.push_back({tile, position, rotation}); } } - void TileFloor::remove_tile(const sf::Vector2i &position) { - TileLayer &layer = this->layers.at(this->activeLayerIndex); + void TileFloor::remove_tile(TilesetTileType type, + const sf::Vector2i &position) { + TileLayer &layer = this->layers.at(type); layer.tiles.resize(std::distance( layer.tiles.begin(), diff --git a/src/floor.hpp b/src/floor.hpp index dcb9fa7..4236166 100644 --- a/src/floor.hpp +++ b/src/floor.hpp @@ -33,7 +33,7 @@ namespace silly::editor { void render(sf::RenderWindow &window) const; void place_tile(std::shared_ptr &tile, const sf::Vector2i &position, const float &rotation); - void remove_tile(const sf::Vector2i &position); + void remove_tile(TilesetTileType type, const sf::Vector2i &position); const int get_width() const; const int get_height() const; -- cgit v1.2.3