From ceb83d5ab34f88851247d5b0ba67a99eafe56847 Mon Sep 17 00:00:00 2001 From: lejulien Date: Wed, 14 Jan 2026 13:33:48 +0100 Subject: [PATCH] wip --- CMakeLists.txt | 1 + includes/context.hpp | 2 ++ includes/patern_preview.hpp | 29 +++++++++++++++++++++++++++++ src/patern_preview.cpp | 32 ++++++++++++++++++++++++++++++++ src/paterns_menu.cpp | 6 +++--- 5 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 includes/patern_preview.hpp create mode 100644 src/patern_preview.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index f03cca0..63ea020 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,6 +75,7 @@ set(SRC_CXX_FILES "./src/main.cpp" "./src/selection_menu.cpp" "./src/selection.cpp" "./src/paterns_menu.cpp" + "./src/patern_preview.cpp" "${rlImGui_SOURCE_DIR}/rlImGui.cpp" "${imgui_SOURCE_DIR}/imgui.cpp" "${imgui_SOURCE_DIR}/imgui_draw.cpp" diff --git a/includes/context.hpp b/includes/context.hpp index 7e3c99d..6cd2293 100644 --- a/includes/context.hpp +++ b/includes/context.hpp @@ -22,6 +22,7 @@ class SelectionMenu; class ControlMenu; class Selection; class PaternsMenu; +class PaternPreview; typedef struct ctx { std::shared_ptr world = nullptr; @@ -32,6 +33,7 @@ typedef struct ctx { std::shared_ptr control_menu = nullptr; std::shared_ptr selection = nullptr; std::shared_ptr paterns_menu = nullptr; + std::shared_ptr patern_preview = nullptr; nlohmann::json config_json; std::filesystem::path program_dir; } ctx; diff --git a/includes/patern_preview.hpp b/includes/patern_preview.hpp new file mode 100644 index 0000000..e825597 --- /dev/null +++ b/includes/patern_preview.hpp @@ -0,0 +1,29 @@ +/* +* File name: patern_preview.hpp +* Author: lejulien +* Date created: 01-01-1970 00:59:59 +// Date modified: 12-01-2026 21:30:10 +* ------ +*/ + +#pragma once + +#include + +#include + +namespace gol { + +class PaternPreview { +public: + PaternPreview(std::shared_ptr); + ~PaternPreview() = default; + void update(); + void display(); + void start(); +private: + bool is_started = false; + std::shared_ptr context_; +}; + +} // namespace gol diff --git a/src/patern_preview.cpp b/src/patern_preview.cpp new file mode 100644 index 0000000..8141448 --- /dev/null +++ b/src/patern_preview.cpp @@ -0,0 +1,32 @@ +/* +* File name: patern_preview.cpp +* Author: lejulien +* Date created: 01-01-1970 00:59:59 +// Date modified: 12-01-2026 21:30:10 +* ------ +*/ + +#include + +namespace gol { + +PaternPreview::PaternPreview(std::shared_ptr context): context_(context) {} + +void PaternPreview::start() { + // TODO: load patern from pater menu + is_started = true; +} + +void PaternPreview::update() { + if (!is_started) return; + // gather mousePos + // if right click stop the preview + // if left click, apply patern to current world + // mouse should pass through any present windows +} + +void PaternPreview::display() { + +} + +}; diff --git a/src/paterns_menu.cpp b/src/paterns_menu.cpp index d90212c..e1025d7 100644 --- a/src/paterns_menu.cpp +++ b/src/paterns_menu.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include namespace gol { @@ -77,9 +78,8 @@ void PaternsMenu::display() { for (auto patern_name : paterns_name_list_) { ImGui::PushID(patern_name.c_str()); if (ImGui::Button(patern_name.c_str()) && - loadPatern(paterns_paths_list_[patern_name])) { - // TODO: If patern is loaded successfuly, start the preview in the - // editor + loadPatern(paterns_paths_list_[patern_name])) { + context_->patern_preview->start(); } ImGui::PopID(); ImGui::SameLine(ImGui::GetWindowWidth() - 57.);