summaryrefslogtreecommitdiff
path: root/src/editor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/editor.cpp')
-rw-r--r--src/editor.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/editor.cpp b/src/editor.cpp
index f19cf65..74632b7 100644
--- a/src/editor.cpp
+++ b/src/editor.cpp
@@ -13,6 +13,7 @@
#include "imgui-SFML.h"
#include "imgui.h"
+#include "level.hpp"
#include "nfd.h"
#include "nfd.hpp"
#include "tileset.hpp"
@@ -68,13 +69,17 @@ namespace silly::editor {
void Editor::update(sf::RenderWindow &window) {
// tile placement
- if (sf::Mouse::isButtonPressed(sf::Mouse::Button::Left) ||
- sf::Mouse::isButtonPressed(sf::Mouse::Button::Right)) {
+ if ((sf::Mouse::isButtonPressed(sf::Mouse::Button::Left) ||
+ sf::Mouse::isButtonPressed(sf::Mouse::Button::Right)) &&
+ !this->package.get_levels().empty()) {
sf::Vector2f mousePosition =
window.mapPixelToCoords(sf::Mouse::getPosition(window));
- for (int x = 0; x < this->floor.get_width(); x++) {
- for (int y = 0; y < this->floor.get_height(); y++) {
+ TileLevel &level = this->package.get_current_level();
+ TileFloor &floor = level.get_current_floor();
+
+ for (int x = 0; x < floor.get_width(); x++) {
+ for (int y = 0; y < floor.get_height(); y++) {
int rx = x * TILE_WIDTH, ry = y * TILE_HEIGHT;
if ((rx < mousePosition.x && mousePosition.x < rx + TILE_WIDTH) &&
@@ -87,9 +92,9 @@ namespace silly::editor {
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);
+ floor.place_tile(tile, pos, this->rotation);
} else if (sf::Mouse::isButtonPressed(sf::Mouse::Button::Right)) {
- this->floor.remove_tile(tile->type, pos);
+ floor.remove_tile(tile->type, pos);
}
}
}
@@ -162,8 +167,8 @@ namespace silly::editor {
int columns = ImGui::GetContentRegionAvail().x / (imageSize + padding);
int count = 0;
- for (auto it = this->tileset.get_tiles().begin();
- it != this->tileset.get_tiles().end(); ++it) {
+ for (auto it = this->package.get_tileset().get_tiles().begin();
+ it != this->package.get_tileset().get_tiles().end(); ++it) {
if (ImGui::ImageButton(std::to_string(it->get()->id).c_str(),
it->get()->texture,
sf::Vector2f(imageSize, imageSize))) {
@@ -244,7 +249,7 @@ namespace silly::editor {
// -- Tile creation --
if (ImGui::Button("Create a new tile")) {
- this->tileset.add_tile(state.path, state.type);
+ this->package.get_tileset().add_tile(state.path, state.type);
ImGui::SetWindowCollapsed(true);
}