From 6a610200d02caa15ace59a5cbc991a44e2a41ea1 Mon Sep 17 00:00:00 2001 From: Anthony Rabine Date: Tue, 16 Jan 2024 13:18:59 +0100 Subject: [PATCH] Factorised more code in LabraryManager and StoryProject, used widely --- software/library/library_manager.cpp | 41 ++++-- software/library/library_manager.h | 5 + software/library/story_project.cpp | 57 ++++----- software/library/story_project.h | 12 +- software/library/uuid.h | 8 ++ story-editor/src/i_story_manager.h | 2 +- story-editor/src/library_window.cpp | 7 +- story-editor/src/main.cpp | 8 -- story-editor/src/main_window.cpp | 171 ++++++++------------------ story-editor/src/main_window.h | 7 +- story-editor/src/resources_window.cpp | 1 - story-editor/src/resources_window.h | 3 - 12 files changed, 135 insertions(+), 187 deletions(-) diff --git a/software/library/library_manager.cpp b/software/library/library_manager.cpp index 235b72f..ec69fa8 100644 --- a/software/library/library_manager.cpp +++ b/software/library/library_manager.cpp @@ -1,9 +1,11 @@ #include "library_manager.h" #include "tlv.h" #include -#include + #include "json.hpp" #include "story_project.h" +#include "uuid.h" + LibraryManager::LibraryManager() {} @@ -13,14 +15,6 @@ void LibraryManager::Initialize(const std::string &library_path) Scan(); } -bool IsUUIDV4(const std::string& input) { - // Le motif regex pour un UUID V4 - std::regex uuidRegex("^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$",std::regex_constants::icase); - - // Vérifier si la chaîne correspond au motif UUID V4 - return std::regex_match(input, uuidRegex); -} - void LibraryManager::Scan() { std::filesystem::path directoryPath(m_library_path); @@ -33,7 +27,7 @@ void LibraryManager::Scan() { // Si c'est un sous-répertoire, récursivement scanner le contenu std::string uuid = entry.path().filename(); - if (IsUUIDV4(uuid)) + if (UUID::IsValid(uuid)) { std::cout << "Found story directory" << std::endl; // Look for a story.json file in this directory @@ -49,6 +43,7 @@ void LibraryManager::Scan() if (proj->ParseStoryInformation(j)) { // Valid project file, add it to the list + proj->SetPaths(uuid, m_library_path); m_projectsList.push_back(proj); } } @@ -63,6 +58,32 @@ void LibraryManager::Scan() } } +std::shared_ptr LibraryManager::NewProject() +{ + auto story = std::make_shared(); + std::string uuid = UUID().String(); + + story->New(uuid, m_library_path); + story->SetDisplayFormat(320, 240); + story->SetImageFormat(StoryProject::IMG_FORMAT_QOIF); + story->SetSoundFormat(StoryProject::SND_FORMAT_WAV); + story->SetName("New project"); + return story; +} + +std::shared_ptr LibraryManager::GetStory(const std::string &uuid) +{ + std::shared_ptr current; + for (const auto &s : m_projectsList) + { + if (s->GetUuid() == uuid) + { + current = s; + } + } + return current; +} + void LibraryManager::Save() { auto p = std::filesystem::path(m_library_path) / "index.ost"; diff --git a/software/library/library_manager.h b/software/library/library_manager.h index 4d72f84..85f713b 100644 --- a/software/library/library_manager.h +++ b/software/library/library_manager.h @@ -22,6 +22,11 @@ public: void Save(); void Scan(); + + std::shared_ptr NewProject(); + + std::shared_ptr GetStory(const std::string &uuid); + private: std::string m_library_path; std::vector> m_projectsList; diff --git a/software/library/story_project.cpp b/software/library/story_project.cpp index 3b34fde..d4e538e 100644 --- a/software/library/story_project.cpp +++ b/software/library/story_project.cpp @@ -2,7 +2,6 @@ #include #include -#include #include #include "json.hpp" @@ -16,34 +15,27 @@ StoryProject::~StoryProject() { } - - -void StoryProject::New(const std::string &uuid, const std::string &file_path) +void StoryProject::SetPaths(const std::string &uuid, const std::string &library_path) { m_uuid = uuid; - Initialize(file_path); + m_project_file_path = std::filesystem::path(library_path) / uuid / std::filesystem::path("project.json"); + + m_working_dir = m_project_file_path.parent_path().generic_string(); + m_assetsPath = m_working_dir / std::filesystem::path("assets"); + + std::cout << "Working dir is: " << m_working_dir << std::endl; } -void StoryProject::SaveStory(const std::vector &m_program) +void StoryProject::New(const std::string &uuid, const std::string &library_path) { - std::ofstream o(m_working_dir / "story.c32", std::ios::out | std::ios::binary); - o.write(reinterpret_cast(m_program.data()), m_program.size()); - o.close(); -} - -void StoryProject::Initialize(const std::string &file_path) -{ - m_story_file_path = file_path; - std::filesystem::path p(file_path); - m_working_dir= p.parent_path().generic_string(); + SetPaths(uuid, library_path); // First try to create the working directory if (!std::filesystem::is_directory(m_working_dir)) { std::filesystem::create_directories(m_working_dir); } - m_assetsPath = std::filesystem::path(m_working_dir) / "assets"; std::filesystem::create_directories(m_assetsPath); @@ -51,6 +43,13 @@ void StoryProject::Initialize(const std::string &file_path) } +void StoryProject::SaveBinary(const std::vector &m_program) +{ + std::ofstream o(m_working_dir / "story.c32", std::ios::out | std::ios::binary); + o.write(reinterpret_cast(m_program.data()), m_program.size()); + o.close(); +} + bool StoryProject::ParseStoryInformation(nlohmann::json &j) { bool success = false; @@ -71,22 +70,12 @@ bool StoryProject::ParseStoryInformation(nlohmann::json &j) } -bool StoryProject::Load(const std::string &file_path, nlohmann::json &model, ResourceManager &manager) +bool StoryProject::Load(nlohmann::json &model, ResourceManager &manager) { - - std::ifstream f(file_path); - bool success = false; - - std::filesystem::path p(file_path); - m_working_dir= p.parent_path().generic_string(); - - std::cout << "Working dir is: " << m_working_dir << std::endl; - try { - + std::ifstream f(m_project_file_path); nlohmann::json j = nlohmann::json::parse(f); - // m_nodes.clear(); manager.Clear(); if (ParseStoryInformation(j)) @@ -109,7 +98,7 @@ bool StoryProject::Load(const std::string &file_path, nlohmann::json &model, Res if (j.contains("nodegraph")) { model = j["nodegraph"]; - success = true; + m_initialized = true; } } } @@ -180,7 +169,7 @@ bool StoryProject::Load(const std::string &file_path, nlohmann::json &model, Res std::cout << e.what() << std::endl; } - return success; + return m_initialized; } void StoryProject::Save(const nlohmann::json &model, ResourceManager &manager) @@ -206,7 +195,7 @@ void StoryProject::Save(const nlohmann::json &model, ResourceManager &manager) j["nodegraph"] = model; - std::ofstream o(m_story_file_path); + std::ofstream o(m_project_file_path); o << std::setw(4) << j << std::endl; } /* @@ -248,7 +237,7 @@ void StoryProject::Clear() { m_uuid = ""; m_working_dir = ""; - m_story_file_path = ""; + m_project_file_path = ""; m_initialized = false; } @@ -339,7 +328,7 @@ void StoryProject::SetDisplayFormat(int w, int h) std::string StoryProject::GetProjectFilePath() const { - return m_story_file_path; + return m_project_file_path; } std::string StoryProject::GetWorkingDir() const diff --git a/software/library/story_project.h b/software/library/story_project.h index 57aba21..38a71fb 100644 --- a/software/library/story_project.h +++ b/software/library/story_project.h @@ -59,8 +59,11 @@ public: StoryNode *m_tree; */ - bool Load(const std::string &file_path, nlohmann::json &model, ResourceManager &manager); + void New(const std::string &uuid, const std::string &library_path); + bool Load(nlohmann::json &model, ResourceManager &manager); void Save(const nlohmann::json &model, ResourceManager &manager); + void SaveBinary(const std::vector &m_program); + void SetPaths(const std::string &uuid, const std::string &library_path); void CreateTree(); void Clear(); @@ -95,14 +98,13 @@ public: std::string GetTitleSound() const { return m_titleSound; } // Initialize with an existing project - void Initialize(const std::string &file_path); const bool IsInitialized() const { return m_initialized; } - void New(const std::string &uuid, const std::string &file_path); + static void EraseString(std::string &theString, const std::string &toErase); static std::string ToUpper(const std::string &input); - void SaveStory(const std::vector &m_program); + bool ParseStoryInformation(nlohmann::json &j); private: @@ -119,7 +121,7 @@ private: bool m_initialized{false}; std::filesystem::path m_working_dir; /// Temporary folder based on the uuid, where the archive is unzipped - std::string m_story_file_path; /// JSON project file + std::filesystem::path m_project_file_path; /// JSON project file int m_display_w{320}; int m_display_h{240}; diff --git a/software/library/uuid.h b/software/library/uuid.h index 59e0691..3afddcd 100644 --- a/software/library/uuid.h +++ b/software/library/uuid.h @@ -3,6 +3,7 @@ #include #include +#include // Encaasulate the genaeration of a Version 4 UUID object // A Version 4 UUID is a universally unique identifier that is generated using random numbers. @@ -46,6 +47,13 @@ public: return uuid; } + static bool IsValid(const std::string& input) { + // Le motif regex pour un UUID V4 + std::regex uuidRegex("^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$",std::regex_constants::icase); + + // Vérifier si la chaîne correspond au motif UUID V4 + return std::regex_match(input, uuidRegex); + } unsigned char _data[16] = {0}; }; diff --git a/story-editor/src/i_story_manager.h b/story-editor/src/i_story_manager.h index 3e69960..c34171a 100644 --- a/story-editor/src/i_story_manager.h +++ b/story-editor/src/i_story_manager.h @@ -14,7 +14,7 @@ class IStoryManager public: virtual ~IStoryManager() {} - virtual void OpenProject(const std::string &filename) = 0; + virtual void OpenProject(const std::string &uuid) = 0; virtual void Log(const std::string &txt, bool critical = false) = 0; virtual void PlaySoundFile(const std::string &fileName) = 0; virtual std::string BuildFullAssetsPath(const std::string &fileName) const = 0; diff --git a/story-editor/src/library_window.cpp b/story-editor/src/library_window.cpp index e92622c..c6eac2d 100644 --- a/story-editor/src/library_window.cpp +++ b/story-editor/src/library_window.cpp @@ -2,6 +2,8 @@ #include "gui.h" #include "ImGuiFileDialog.h" #include +#include "IconsMaterialDesignIcons.h" + LibraryWindow::LibraryWindow(IStoryManager &project, LibraryManager &library) : WindowBase("Library Manager") @@ -40,7 +42,7 @@ void LibraryWindow::Draw() WindowBase::BeginDraw(); ImGui::SetWindowSize(ImVec2(626, 744), ImGuiCond_FirstUseEver); - if (ImGui::Button("Select directory")) + if (ImGui::Button( ICON_MDI_FOLDER " Select directory")) { ImGuiFileDialog::Instance()->OpenDialog("ChooseLibraryDirDialog", "Choose a library directory", nullptr, ".", 1, nullptr, ImGuiFileDialogFlags_Modal); } @@ -96,8 +98,7 @@ void LibraryWindow::Draw() if (ImGui::SmallButton("Load")) { - auto filename = std::filesystem::path(m_libraryManager.LibraryPath()) / p->GetUuid() / std::filesystem::path("project.json"); - m_storyManager.OpenProject(filename); + m_storyManager.OpenProject(p->GetUuid()); } ImGui::SameLine(); diff --git a/story-editor/src/main.cpp b/story-editor/src/main.cpp index 2cf7059..1012bae 100644 --- a/story-editor/src/main.cpp +++ b/story-editor/src/main.cpp @@ -1,14 +1,6 @@ #include "main_window.h" - -#include // std::cerr -#include // std::set_terminate -#include // std::abort -#include - -#include - // Main code int main(int, char**) { diff --git a/story-editor/src/main_window.cpp b/story-editor/src/main_window.cpp index 1bc6066..92abd30 100644 --- a/story-editor/src/main_window.cpp +++ b/story-editor/src/main_window.cpp @@ -2,7 +2,7 @@ #include #include #include "platform_folders.h" -#include "uuid.h" + #include "media_converter.h" #ifdef USE_WINDOWS_OS @@ -15,7 +15,6 @@ #pragma comment(lib, "ws2_32.lib") #endif -#include "IconsMaterialDesignIcons.h" #include "ImGuiFileDialog.h" MainWindow::MainWindow() @@ -40,8 +39,6 @@ MainWindow::MainWindow() Callback::func = std::bind(&MainWindow::Syscall, this, std::placeholders::_1, std::placeholders::_2); m_chip32_ctx.syscall = static_cast(Callback::callback); - m_story.Clear(); - CloseProject(); } @@ -187,7 +184,7 @@ uint8_t MainWindow::Syscall(chip32_ctx_t *ctx, uint8_t code) if (m_chip32_ctx.registers[R0] != 0) { // image file name address is in R0 - std::string imageFile = m_story.BuildFullAssetsPath(GetFileNameFromMemory(m_chip32_ctx.registers[R0])); + std::string imageFile = m_story->BuildFullAssetsPath(GetFileNameFromMemory(m_chip32_ctx.registers[R0])); Log("Image: " + imageFile); m_emulatorWindow.SetImage(imageFile); } @@ -199,7 +196,7 @@ uint8_t MainWindow::Syscall(chip32_ctx_t *ctx, uint8_t code) if (m_chip32_ctx.registers[R1] != 0) { // sound file name address is in R1 - std::string soundFile = m_story.BuildFullAssetsPath(GetFileNameFromMemory(m_chip32_ctx.registers[R1])); + std::string soundFile = m_story->BuildFullAssetsPath(GetFileNameFromMemory(m_chip32_ctx.registers[R1])); Log(", Sound: " + soundFile); m_player.Play(soundFile); } @@ -267,11 +264,6 @@ void MainWindow::DrawMainMenuBar() showNewProject = true; } /* - if (ImGui::MenuItem("Open project")) - { - showOpenProject = true; - } - if (ImGui::BeginMenu("Open Recent")) { for (auto &e : m_recentProjects) @@ -289,7 +281,7 @@ void MainWindow::DrawMainMenuBar() } */ - bool init = m_story.IsInitialized(); // local copy because CloseProject() changes the status between BeginDisabled/EndDisabled + bool init = m_story ? true : false; // local copy because CloseProject() changes the status between BeginDisabled/EndDisabled if (!init) ImGui::BeginDisabled(); @@ -334,9 +326,13 @@ void MainWindow::DrawMainMenuBar() if (showParameters) { - if (m_story.IsInitialized()) + if (m_story) { ImGui::OpenPopup("ProjectPropertiesPopup"); + + // Init some variables + std::size_t length = m_story->GetName().copy(m_project_name, sizeof(m_project_name)); + m_project_name[length] = '\0'; } } @@ -345,12 +341,6 @@ void MainWindow::DrawMainMenuBar() ImGuiFileDialog::Instance()->OpenDialog("ChooseDirDialog", "Choose a parent directory for your project", nullptr, ".", 1, nullptr, ImGuiFileDialogFlags_Modal); } - if (showOpenProject) - { - std::string home = pf::getUserHome() + "/"; - ImGuiFileDialog::Instance()->OpenDialog("OpenProjectDlgKey", "Choose File", ".json", home, 1, nullptr, ImGuiFileDialogFlags_Modal); - } - // Always center this window when appearing ImVec2 center = ImGui::GetMainViewport()->GetCenter(); //ImVec2 parent_pos = ImGui::GetWindowPos(); @@ -426,27 +416,6 @@ bool MainWindow::ShowQuitConfirm() } -void MainWindow::OpenProjectDialog() -{ - ImGui::SetNextWindowSize(ImVec2(626, 744), ImGuiCond_FirstUseEver); - if (ImGuiFileDialog::Instance()->Display("OpenProjectDlgKey")) - { - // ImGui::SetWindowSize(ImVec2(626, 744), ImGuiCond_FirstUseEver); - - // action if OK - if (ImGuiFileDialog::Instance()->IsOk()) - { - std::string filePathName = ImGuiFileDialog::Instance()->GetFilePathName(); - std::string filePath = ImGuiFileDialog::Instance()->GetCurrentPath(); - - OpenProject(filePathName); - } - - // close - ImGuiFileDialog::Instance()->Close(); - } -} - void MainWindow::NewProjectPopup() { // Always center this window when appearing @@ -463,19 +432,13 @@ void MainWindow::NewProjectPopup() if (!std::filesystem::is_directory(projdir)) { + m_story = m_libraryManager.NewProject(); - std::string uuid = UUID().String(); - auto p = std::filesystem::path(projdir) / uuid / std::filesystem::path("project.json"); - m_story.Initialize(p.generic_string()); - - m_story.SetDisplayFormat(320, 240); - m_story.SetImageFormat(StoryProject::IMG_FORMAT_QOIF); - m_story.SetSoundFormat(StoryProject::SND_FORMAT_WAV); - m_story.SetName("New project"); - m_story.SetUuid(uuid); - - SaveProject(); - OpenProject(p.generic_string()); + if (m_story) + { + SaveProject(); + OpenProject(m_story->GetUuid()); + } } } @@ -486,45 +449,15 @@ void MainWindow::NewProjectPopup() void MainWindow::ProjectPropertiesPopup() { - - static std::string projdir; // Always center this window when appearing ImVec2 center = ImGui::GetMainViewport()->GetCenter(); ImGui::SetNextWindowPos(center, ImGuiCond_Appearing, ImVec2(0.5f, 0.5f)); if (ImGui::BeginPopupModal("ProjectPropertiesPopup", NULL, ImGuiWindowFlags_AlwaysAutoResize)) { - ImGui::Text("New project parameters (directory must be empty)"); - ImGui::Separator(); - - ImGui::Text("Directory: "); ImGui::SameLine(); - static char project_dir[256] = ""; - ImGui::InputTextWithHint("##project_path", "Project path", project_dir, IM_ARRAYSIZE(project_dir)); - ImGui::SameLine(); - if (ImGui::Button( ICON_MDI_FOLDER " ...")) - { - ImGuiFileDialog::Instance()->OpenDialog("ChooseDirDialog", "Choose File", nullptr, ".", 1, nullptr, ImGuiFileDialogFlags_Modal); - } - - // display - if (ImGuiFileDialog::Instance()->Display("ChooseDirDialog")) - { - // action if OK - if (ImGuiFileDialog::Instance()->IsOk()) - { - std::string filePathName = ImGuiFileDialog::Instance()->GetFilePathName(); - projdir = ImGuiFileDialog::Instance()->GetCurrentPath(); - - } - - // close - ImGuiFileDialog::Instance()->Close(); - } - ImGui::Text("Project name: "); ImGui::SameLine(); - static char project_name[256] = ""; - ImGui::InputTextWithHint("##project_name", "Project name", project_name, IM_ARRAYSIZE(project_name)); + ImGui::InputTextWithHint("##project_name", "Project name", m_project_name, IM_ARRAYSIZE(m_project_name)); ImGui::Text("Size of display screen: "); ImGui::SameLine(); @@ -630,33 +563,23 @@ void MainWindow::ProjectPropertiesPopup() if (ImGui::Button("OK", ImVec2(120, 0))) { - bool valid{true}; - - if (!std::filesystem::is_directory(projdir)) + if (display_item_current_idx == 0) { - valid = false; + m_story->SetDisplayFormat(320, 240); + } + else + { + m_story->SetDisplayFormat(640, 480); } - if (valid) - { + m_story->SetImageFormat(GetImageFormat(image_item_current_idx)); + m_story->SetSoundFormat(GetSoundFormat(sound_item_current_idx)); + m_story->SetName(m_project_name); - if (display_item_current_idx == 0) - { - m_story.SetDisplayFormat(320, 240); - } - else - { - m_story.SetDisplayFormat(640, 480); - } + SaveProject(); - m_story.SetImageFormat(GetImageFormat(image_item_current_idx)); - m_story.SetSoundFormat(GetSoundFormat(sound_item_current_idx)); - m_story.SetName(project_name); + ImGui::CloseCurrentPopup(); - SaveProject(); - - ImGui::CloseCurrentPopup(); - } } ImGui::SetItemDefaultFocus(); ImGui::SameLine(); @@ -666,29 +589,31 @@ void MainWindow::ProjectPropertiesPopup() } ImGui::EndPopup(); } - else - { - projdir = ""; - } } void MainWindow::SaveProject() { nlohmann::json model; m_nodeEditorWindow.Save(model); - m_story.Save(model, m_resources); + m_story->Save(model, m_resources); } -void MainWindow::OpenProject(const std::string &filename) +void MainWindow::OpenProject(const std::string &uuid) { CloseProject(); nlohmann::json model; - if (m_story.Load(filename, model, m_resources)) + m_story = m_libraryManager.GetStory(uuid); + + if (!m_story) + { + Log("Cannot find story: " + uuid); + } + else if (m_story->Load(model, m_resources)) { Log("Open project success"); m_nodeEditorWindow.Load(model); - auto proj = m_story.GetProjectFilePath(); + auto proj = m_story->GetProjectFilePath(); // Add to recent if not exists if (std::find(m_recentProjects.begin(), m_recentProjects.end(), proj) == m_recentProjects.end()) { @@ -719,14 +644,23 @@ void MainWindow::OpenProject(const std::string &filename) void MainWindow::RefreshProjectInformation() { - std::string fullText = "Story Editor " + LibraryManager::GetVersion() + " - " + m_story.GetProjectFilePath(); + std::string fullText = "Story Editor " + LibraryManager::GetVersion(); + + if (m_story) + { + fullText += " - " + m_story->GetProjectFilePath(); + } m_gui.SetWindowTitle(fullText); } void MainWindow::CloseProject() { - m_story.Clear(); + if (m_story) + { + m_story->Clear(); + } + m_resources.Clear(); m_nodeEditorWindow.Clear(); @@ -782,7 +716,6 @@ void MainWindow::Loop() } NewProjectPopup(); - OpenProjectDialog(); ProjectPropertiesPopup(); if (aboutToClose) @@ -816,7 +749,7 @@ void MainWindow::PlaySoundFile(const std::string &fileName) std::string MainWindow::BuildFullAssetsPath(const std::string &fileName) const { - return m_story.BuildFullAssetsPath(fileName); + return m_story->BuildFullAssetsPath(fileName); } std::pair MainWindow::Images() @@ -915,7 +848,7 @@ void MainWindow::GenerateBinary() // FIXME // m_ramView->SetMemory(m_ram_data, sizeof(m_ram_data)); // m_romView->SetMemory(m_rom_data, m_program.size()); - m_story.SaveStory(m_program); + m_story->SaveBinary(m_program); chip32_initialize(&m_chip32_ctx); m_dbg.run_result = VM_READY; UpdateVmView(); @@ -976,8 +909,8 @@ void MainWindow::ConvertResources() auto [b, e] = m_resources.Items(); for (auto it = b; it != e; ++it) { - std::string inputfile = m_story.BuildFullAssetsPath((*it)->file.c_str()); - std::string outputfile = std::filesystem::path(m_story.AssetsPath() / StoryProject::RemoveFileExtension((*it)->file)).string(); + std::string inputfile = m_story->BuildFullAssetsPath((*it)->file.c_str()); + std::string outputfile = std::filesystem::path(m_story->AssetsPath() / StoryProject::RemoveFileExtension((*it)->file)).string(); int retCode = 0; if ((*it)->format == "PNG") diff --git a/story-editor/src/main_window.h b/story-editor/src/main_window.h index 882f1f8..98c6cea 100644 --- a/story-editor/src/main_window.h +++ b/story-editor/src/main_window.h @@ -93,7 +93,7 @@ public: private: enum VmEventType { EvNoEvent, EvStep, EvOkButton, EvPreviousButton, EvNextButton, EvAudioFinished}; - StoryProject m_story; + std::shared_ptr m_story; // VM uint8_t m_rom_data[16*1024]; @@ -119,6 +119,8 @@ private: ConsoleWindow m_consoleWindow; CodeEditor m_editorWindow; + char m_project_name[256] = ""; + ResourcesWindow m_resourcesWindow; NodeEditorWindow m_nodeEditorWindow; @@ -138,7 +140,7 @@ private: // From IStoryManager (proxy to StoryProject class) - virtual void OpenProject(const std::string &filename) override; + virtual void OpenProject(const std::string &uuid) override; virtual void Log(const std::string &txt, bool critical = false) override; virtual void PlaySoundFile(const std::string &fileName) override;; virtual std::string BuildFullAssetsPath(const std::string &fileName) const override; @@ -170,7 +172,6 @@ private: void NewProjectPopup(); void SaveProject(); void CloseProject(); - void OpenProjectDialog(); void DrawStatusBar(); bool CompileToAssembler(); diff --git a/story-editor/src/resources_window.cpp b/story-editor/src/resources_window.cpp index 56adb35..60b4295 100644 --- a/story-editor/src/resources_window.cpp +++ b/story-editor/src/resources_window.cpp @@ -1,6 +1,5 @@ #include "resources_window.h" #include "imgui.h" -#include #include #include #include "resource.h" diff --git a/story-editor/src/resources_window.h b/story-editor/src/resources_window.h index fee3882..de7068f 100644 --- a/story-editor/src/resources_window.h +++ b/story-editor/src/resources_window.h @@ -1,8 +1,5 @@ #pragma once -#include -#include -#include #include "i_story_manager.h" #include "window_base.h"