diff options
| author | ilotterytea <iltsu@alright.party> | 2025-02-02 02:13:52 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-02-02 02:13:52 +0500 |
| commit | 0ae2d10bdfd3d4fe7483829fb9c9257973e644c7 (patch) | |
| tree | 4c8ca329017a22bee01c65cc1673a479f95c3f1f /src/editor.cpp | |
| parent | 4d6e94ad9b905df16c0c67ea9043395a1f19400a (diff) | |
feat: level package
Diffstat (limited to 'src/editor.cpp')
| -rw-r--r-- | src/editor.cpp | 23 |
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); } |
