From 0ae2d10bdfd3d4fe7483829fb9c9257973e644c7 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sun, 2 Feb 2025 02:13:52 +0500 Subject: feat: level package --- src/editor.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'src/editor.cpp') 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); } -- cgit v1.2.3