diff --git a/CMakeLists.txt b/CMakeLists.txt index 1d18e23..d60484f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,100 +1,14 @@ cmake_minimum_required(VERSION 3.28) project(regenny) - -# Set project wide C++ standard set(CMAKE_CXX_STANDARD 23) - -# -# Dependencies -# include(cmake/CPM.cmake) -CPMAddPackage( - NAME imgui - GITHUB_REPOSITORY ocornut/imgui - VERSION 1.90.9-docking - DOWNLOAD_ONLY YES) - -if (imgui_ADDED) - file(GLOB imgui_sources ${imgui_SOURCE_DIR}/*.cpp) - add_library(imgui STATIC - ${imgui_sources} - ${imgui_SOURCE_DIR}/backends/imgui_impl_sdl2.cpp - ${imgui_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp - ${imgui_SOURCE_DIR}/misc/cpp/imgui_stdlib.cpp) - target_include_directories(imgui PUBLIC - $ - $ - $) - target_link_libraries(imgui PUBLIC SDL2::SDL2) -endif () - -CPMAddPackage("gh:fmtlib/fmt#11.0.2") -CPMAddPackage("gh:taocpp/pegtl#3.2.7") - -CPMAddPackage( - NAME nativefiledialog - GITHUB_REPOSITORY mlabbe/nativefiledialog - VERSION 1.16 - GIT_TAG release_116 - DOWNLOAD_ONLY YES) - -if (nativefiledialog_ADDED) - add_library(nativefiledialog STATIC - ${nativefiledialog_SOURCE_DIR}/src/nfd_common.c - ${nativefiledialog_SOURCE_DIR}/src/nfd_win.cpp) - target_include_directories(nativefiledialog PUBLIC $/src/include) -endif () - -CPMAddPackage( - NAME spdlog - GITHUB_REPOSITORY gabime/spdlog - VERSION 1.14.1 - OPTIONS - "SPDLOG_FMT_EXTERNAL ON") -CPMAddPackage( - NAME utfcpp - GITHUB_REPOSITORY nemtrif/utfcpp - VERSION 4.0.5 - DOWNLOAD_ONLY YES) - -if (utfcpp_ADDED) - add_library(utfcpp INTERFACE) - target_include_directories(utfcpp INTERFACE $) - target_compile_definitions(utfcpp INTERFACE UTF_CPP_CPLUSPLUS=202002L) -endif () - -CPMAddPackage("gh:nlohmann/json@3.11.3") -CPMAddPackage( - NAME SDL2 - GITHUB_REPOSITORY libsdl-org/SDL - VERSION 2.30.5 - GIT_TAG release-2.30.5 - OPTIONS - "SDL_SHARED OFF" - "SDL_STATIC ON") -CPMAddPackage("gh:cursey/sdkgenny#cbf986af49c45afb2016c96202b66d66fa1cbd8e") - -# -# Third party -# - -# Glad -add_library(glad STATIC "thirdparty/glad/src/glad.c") -target_include_directories(glad PUBLIC "thirdparty/glad/include") - -# scope_guard -add_library(scope_guard INTERFACE) -target_include_directories(scope_guard INTERFACE "thirdparty/scope_guard") -# SDL_Trigger -add_library(SDL_Trigger STATIC "thirdparty/SDL_Trigger/SDL_Trigger.cpp") -target_include_directories(SDL_Trigger INTERFACE "thirdparty/SDL_Trigger") -target_link_libraries(SDL_Trigger PUBLIC SDL2::SDL2) +add_subdirectory(third_party) # # regenny # -file(GLOB_RECURSE regenny_sources "src/**") +file(GLOB_RECURSE regenny_sources "src/*") add_executable(regenny ${regenny_sources}) target_include_directories(regenny PRIVATE "src") target_link_libraries(regenny PRIVATE @@ -110,4 +24,8 @@ target_link_libraries(regenny PRIVATE sdkgenny::sdkgenny glad scope_guard - SDL_Trigger) \ No newline at end of file + SDL_Trigger + lua + sol2::sol2 + luagenny +) \ No newline at end of file diff --git a/cmake.toml b/cmake.toml deleted file mode 100644 index 91de0c1..0000000 --- a/cmake.toml +++ /dev/null @@ -1,82 +0,0 @@ -# Reference: https://build-cpp.github.io/cmkr/cmake-toml -[project] -name = "regenny" -cmake-before=""" -add_compile_options($<$:/MP>) -""" - -[vcpkg] -version = "2023.12.12" -packages = [ - "imgui[docking-experimental,freetype,sdl2-binding,opengl3-binding]", - "fmt", - "pegtl", - "nativefiledialog", - "spdlog", - "utfcpp", - "nlohmann-json", - "glad[gl-api-30]", - "lua", - "sol2" -] - -[fetch-content] -sdkgenny = { git = "https://github.com/cursey/sdkgenny.git", tag = "cbf986af49c45afb2016c96202b66d66fa1cbd8e" } -luagenny = { git = "https://github.com/praydog/luagenny.git", tag = "556c914a846ccf3f358b559e99d4610f71d71c29" } - -[find-package] -imgui = {} -fmt = {} -pegtl = {} -unofficial-nativefiledialog = {} -spdlog = {} -utf8cpp = {} -SDL2 = {} -nlohmann_json = {} -glad = {} -sol2 = {} -lua = {} - -[target.regenny] -type = "executable" -sources = [ - "src/**.cpp", - "src/**.hpp", - "thirdparty/**.cpp", - "thirdparty/**.hpp", - "thirdparty/**.h", -] -windows.sources = ["src/**.rc"] -include-directories = [ - "src/", - "thirdparty/scope_gaurd/", - "thirdparty/SDL_Trigger/", -] -link-libraries = [ - "imgui::imgui", - "fmt::fmt", - "taocpp::pegtl", - "unofficial::nativefiledialog::nfd", - "spdlog::spdlog", - "SDL2::SDL2", - "SDL2::SDL2main", - "nlohmann_json::nlohmann_json", - "glad::glad", - "sdkgenny::sdkgenny", - "lua", - "sol2", - "luagenny::luagenny", -] -compile-definitions = ["UTF_CPP_CPLUSPLUS=201103L"] -compile-features = ["cxx_std_17"] -compile-options = ["/EHa"] -cmake-after=""" -add_custom_command( - TARGET regenny POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $) -""" - -[target.test0] -type = "executable" -sources = ["examples/test0.cpp"] -compile-features = ["cxx_std_17"] diff --git a/cmkr.cmake b/cmkr.cmake deleted file mode 100644 index aa51b86..0000000 --- a/cmkr.cmake +++ /dev/null @@ -1,236 +0,0 @@ -include_guard() - -# Change these defaults to point to your infrastructure if desired -set(CMKR_REPO "https://github.com/build-cpp/cmkr" CACHE STRING "cmkr git repository" FORCE) -set(CMKR_TAG "v0.2.13" CACHE STRING "cmkr git tag (this needs to be available forever)" FORCE) -set(CMKR_COMMIT_HASH "" CACHE STRING "cmkr git commit hash (optional)" FORCE) - -# To bootstrap/generate a cmkr project: cmake -P cmkr.cmake -if(CMAKE_SCRIPT_MODE_FILE) - set(CMAKE_BINARY_DIR "${CMAKE_BINARY_DIR}/build") - set(CMAKE_CURRENT_BINARY_DIR "${CMAKE_BINARY_DIR}") - file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}") -endif() - -# Set these from the command line to customize for development/debugging purposes -set(CMKR_EXECUTABLE "" CACHE FILEPATH "cmkr executable") -set(CMKR_SKIP_GENERATION OFF CACHE BOOL "skip automatic cmkr generation") -set(CMKR_BUILD_TYPE "Debug" CACHE STRING "cmkr build configuration") -mark_as_advanced(CMKR_REPO CMKR_TAG CMKR_COMMIT_HASH CMKR_EXECUTABLE CMKR_SKIP_GENERATION CMKR_BUILD_TYPE) - -# Disable cmkr if generation is disabled -if(DEFINED ENV{CI} OR CMKR_SKIP_GENERATION OR CMKR_BUILD_SKIP_GENERATION) - message(STATUS "[cmkr] Skipping automatic cmkr generation") - unset(CMKR_BUILD_SKIP_GENERATION CACHE) - macro(cmkr) - endmacro() - return() -endif() - -# Disable cmkr if no cmake.toml file is found -if(NOT CMAKE_SCRIPT_MODE_FILE AND NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake.toml") - message(AUTHOR_WARNING "[cmkr] Not found: ${CMAKE_CURRENT_SOURCE_DIR}/cmake.toml") - macro(cmkr) - endmacro() - return() -endif() - -# Convert a Windows native path to CMake path -if(CMKR_EXECUTABLE MATCHES "\\\\") - string(REPLACE "\\" "/" CMKR_EXECUTABLE_CMAKE "${CMKR_EXECUTABLE}") - set(CMKR_EXECUTABLE "${CMKR_EXECUTABLE_CMAKE}" CACHE FILEPATH "" FORCE) - unset(CMKR_EXECUTABLE_CMAKE) -endif() - -# Helper macro to execute a process (COMMAND_ERROR_IS_FATAL ANY is 3.19 and higher) -function(cmkr_exec) - execute_process(COMMAND ${ARGV} RESULT_VARIABLE CMKR_EXEC_RESULT) - if(NOT CMKR_EXEC_RESULT EQUAL 0) - message(FATAL_ERROR "cmkr_exec(${ARGV}) failed (exit code ${CMKR_EXEC_RESULT})") - endif() -endfunction() - -# Windows-specific hack (CMAKE_EXECUTABLE_PREFIX is not set at the moment) -if(WIN32) - set(CMKR_EXECUTABLE_NAME "cmkr.exe") -else() - set(CMKR_EXECUTABLE_NAME "cmkr") -endif() - -# Use cached cmkr if found -if(DEFINED ENV{CMKR_CACHE} AND EXISTS "$ENV{CMKR_CACHE}") - set(CMKR_DIRECTORY_PREFIX "$ENV{CMKR_CACHE}") - string(REPLACE "\\" "/" CMKR_DIRECTORY_PREFIX "${CMKR_DIRECTORY_PREFIX}") - if(NOT CMKR_DIRECTORY_PREFIX MATCHES "\\/$") - set(CMKR_DIRECTORY_PREFIX "${CMKR_DIRECTORY_PREFIX}/") - endif() - # Build in release mode for the cache - set(CMKR_BUILD_TYPE "Release") -else() - set(CMKR_DIRECTORY_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/_cmkr_") -endif() -set(CMKR_DIRECTORY "${CMKR_DIRECTORY_PREFIX}${CMKR_TAG}") -set(CMKR_CACHED_EXECUTABLE "${CMKR_DIRECTORY}/bin/${CMKR_EXECUTABLE_NAME}") - -# Handle upgrading logic -if(CMKR_EXECUTABLE AND NOT CMKR_CACHED_EXECUTABLE STREQUAL CMKR_EXECUTABLE) - if(CMKR_EXECUTABLE MATCHES "^${CMAKE_CURRENT_BINARY_DIR}/_cmkr") - if(DEFINED ENV{CMKR_CACHE} AND EXISTS "$ENV{CMKR_CACHE}") - message(AUTHOR_WARNING "[cmkr] Switching to cached cmkr: '${CMKR_CACHED_EXECUTABLE}'") - if(EXISTS "${CMKR_CACHED_EXECUTABLE}") - set(CMKR_EXECUTABLE "${CMKR_CACHED_EXECUTABLE}" CACHE FILEPATH "Full path to cmkr executable" FORCE) - else() - unset(CMKR_EXECUTABLE CACHE) - endif() - else() - message(AUTHOR_WARNING "[cmkr] Upgrading '${CMKR_EXECUTABLE}' to '${CMKR_CACHED_EXECUTABLE}'") - unset(CMKR_EXECUTABLE CACHE) - endif() - elseif(DEFINED ENV{CMKR_CACHE} AND EXISTS "$ENV{CMKR_CACHE}" AND CMKR_EXECUTABLE MATCHES "^${CMKR_DIRECTORY_PREFIX}") - message(AUTHOR_WARNING "[cmkr] Upgrading cached '${CMKR_EXECUTABLE}' to '${CMKR_CACHED_EXECUTABLE}'") - unset(CMKR_EXECUTABLE CACHE) - endif() -endif() - -if(CMKR_EXECUTABLE AND EXISTS "${CMKR_EXECUTABLE}") - message(VERBOSE "[cmkr] Found cmkr: '${CMKR_EXECUTABLE}'") -elseif(CMKR_EXECUTABLE AND NOT CMKR_EXECUTABLE STREQUAL CMKR_CACHED_EXECUTABLE) - message(FATAL_ERROR "[cmkr] '${CMKR_EXECUTABLE}' not found") -elseif(NOT CMKR_EXECUTABLE AND EXISTS "${CMKR_CACHED_EXECUTABLE}") - set(CMKR_EXECUTABLE "${CMKR_CACHED_EXECUTABLE}" CACHE FILEPATH "Full path to cmkr executable" FORCE) - message(STATUS "[cmkr] Found cached cmkr: '${CMKR_EXECUTABLE}'") -else() - set(CMKR_EXECUTABLE "${CMKR_CACHED_EXECUTABLE}" CACHE FILEPATH "Full path to cmkr executable" FORCE) - message(VERBOSE "[cmkr] Bootstrapping '${CMKR_EXECUTABLE}'") - - message(STATUS "[cmkr] Fetching cmkr...") - if(EXISTS "${CMKR_DIRECTORY}") - cmkr_exec("${CMAKE_COMMAND}" -E rm -rf "${CMKR_DIRECTORY}") - endif() - find_package(Git QUIET REQUIRED) - cmkr_exec("${GIT_EXECUTABLE}" - clone - --config advice.detachedHead=false - --branch ${CMKR_TAG} - --depth 1 - ${CMKR_REPO} - "${CMKR_DIRECTORY}" - ) - if(CMKR_COMMIT_HASH) - execute_process( - COMMAND "${GIT_EXECUTABLE}" checkout -q "${CMKR_COMMIT_HASH}" - RESULT_VARIABLE CMKR_EXEC_RESULT - WORKING_DIRECTORY "${CMKR_DIRECTORY}" - ) - if(NOT CMKR_EXEC_RESULT EQUAL 0) - message(FATAL_ERROR "Tag '${CMKR_TAG}' hash is not '${CMKR_COMMIT_HASH}'") - endif() - endif() - message(STATUS "[cmkr] Building cmkr (using system compiler)...") - cmkr_exec("${CMAKE_COMMAND}" - --no-warn-unused-cli - "${CMKR_DIRECTORY}" - "-B${CMKR_DIRECTORY}/build" - "-DCMAKE_BUILD_TYPE=${CMKR_BUILD_TYPE}" - "-DCMAKE_UNITY_BUILD=ON" - "-DCMAKE_INSTALL_PREFIX=${CMKR_DIRECTORY}" - "-DCMKR_GENERATE_DOCUMENTATION=OFF" - ) - cmkr_exec("${CMAKE_COMMAND}" - --build "${CMKR_DIRECTORY}/build" - --config "${CMKR_BUILD_TYPE}" - --parallel - ) - cmkr_exec("${CMAKE_COMMAND}" - --install "${CMKR_DIRECTORY}/build" - --config "${CMKR_BUILD_TYPE}" - --prefix "${CMKR_DIRECTORY}" - --component cmkr - ) - if(NOT EXISTS ${CMKR_EXECUTABLE}) - message(FATAL_ERROR "[cmkr] Failed to bootstrap '${CMKR_EXECUTABLE}'") - endif() - cmkr_exec("${CMKR_EXECUTABLE}" version) - message(STATUS "[cmkr] Bootstrapped ${CMKR_EXECUTABLE}") -endif() -execute_process(COMMAND "${CMKR_EXECUTABLE}" version - RESULT_VARIABLE CMKR_EXEC_RESULT -) -if(NOT CMKR_EXEC_RESULT EQUAL 0) - message(FATAL_ERROR "[cmkr] Failed to get version, try clearing the cache and rebuilding") -endif() - -# Use cmkr.cmake as a script -if(CMAKE_SCRIPT_MODE_FILE) - if(NOT EXISTS "${CMAKE_SOURCE_DIR}/cmake.toml") - execute_process(COMMAND "${CMKR_EXECUTABLE}" init - RESULT_VARIABLE CMKR_EXEC_RESULT - ) - if(NOT CMKR_EXEC_RESULT EQUAL 0) - message(FATAL_ERROR "[cmkr] Failed to bootstrap cmkr project. Please report an issue: https://github.com/build-cpp/cmkr/issues/new") - else() - message(STATUS "[cmkr] Modify cmake.toml and then configure using: cmake -B build") - endif() - else() - execute_process(COMMAND "${CMKR_EXECUTABLE}" gen - RESULT_VARIABLE CMKR_EXEC_RESULT - ) - if(NOT CMKR_EXEC_RESULT EQUAL 0) - message(FATAL_ERROR "[cmkr] Failed to generate project.") - else() - message(STATUS "[cmkr] Configure using: cmake -B build") - endif() - endif() -endif() - -# This is the macro that contains black magic -macro(cmkr) - # When this macro is called from the generated file, fake some internal CMake variables - get_source_file_property(CMKR_CURRENT_LIST_FILE "${CMAKE_CURRENT_LIST_FILE}" CMKR_CURRENT_LIST_FILE) - if(CMKR_CURRENT_LIST_FILE) - set(CMAKE_CURRENT_LIST_FILE "${CMKR_CURRENT_LIST_FILE}") - get_filename_component(CMAKE_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY) - endif() - - # File-based include guard (include_guard is not documented to work) - get_source_file_property(CMKR_INCLUDE_GUARD "${CMAKE_CURRENT_LIST_FILE}" CMKR_INCLUDE_GUARD) - if(NOT CMKR_INCLUDE_GUARD) - set_source_files_properties("${CMAKE_CURRENT_LIST_FILE}" PROPERTIES CMKR_INCLUDE_GUARD TRUE) - - file(SHA256 "${CMAKE_CURRENT_LIST_FILE}" CMKR_LIST_FILE_SHA256_PRE) - - # Generate CMakeLists.txt - cmkr_exec("${CMKR_EXECUTABLE}" gen - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - ) - - file(SHA256 "${CMAKE_CURRENT_LIST_FILE}" CMKR_LIST_FILE_SHA256_POST) - - # Delete the temporary file if it was left for some reason - set(CMKR_TEMP_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CMakerLists.txt") - if(EXISTS "${CMKR_TEMP_FILE}") - file(REMOVE "${CMKR_TEMP_FILE}") - endif() - - if(NOT CMKR_LIST_FILE_SHA256_PRE STREQUAL CMKR_LIST_FILE_SHA256_POST) - # Copy the now-generated CMakeLists.txt to CMakerLists.txt - # This is done because you cannot include() a file you are currently in - configure_file(CMakeLists.txt "${CMKR_TEMP_FILE}" COPYONLY) - - # Add the macro required for the hack at the start of the cmkr macro - set_source_files_properties("${CMKR_TEMP_FILE}" PROPERTIES - CMKR_CURRENT_LIST_FILE "${CMAKE_CURRENT_LIST_FILE}" - ) - - # 'Execute' the newly-generated CMakeLists.txt - include("${CMKR_TEMP_FILE}") - - # Delete the generated file - file(REMOVE "${CMKR_TEMP_FILE}") - - # Do not execute the rest of the original CMakeLists.txt - return() - endif() - # Resume executing the unmodified CMakeLists.txt - endif() -endmacro() diff --git a/src/ReGenny.cpp b/src/ReGenny.cpp index 08c5df3..c14c276 100644 --- a/src/ReGenny.cpp +++ b/src/ReGenny.cpp @@ -5,7 +5,7 @@ #include -// #include +#include #include #include #include @@ -35,7 +35,7 @@ ReGenny::ReGenny(SDL_Window* window) spdlog::set_pattern("[%H:%M:%S] [%l] %v"); spdlog::info("Start of log."); - // reset_lua_state(); + reset_lua_state(); auto path_str = SDL_GetPrefPath("cursey", "ReGenny"); m_app_path = path_str; @@ -47,7 +47,7 @@ ReGenny::ReGenny(SDL_Window* window) m_triggers.on({SDLK_LCTRL, SDLK_o}, [this] { file_open(); }); m_triggers.on({SDLK_LCTRL, SDLK_s}, [this] { file_save(); }); m_triggers.on({SDLK_LCTRL, SDLK_q}, [this] { file_quit(); }); - // m_triggers.on({SDLK_LCTRL, SDLK_l}, [this] { file_run_lua_script(); }); + m_triggers.on({SDLK_LCTRL, SDLK_l}, [this] { file_run_lua_script(); }); m_triggers.on({SDLK_LCTRL, SDLK_e}, [this] { file_open_in_editor(); }); } @@ -107,18 +107,17 @@ void ReGenny::ui() { ImGuiID left{}, right{}; ImGuiID top{}, bottom{}; - // ImGuiID bottom_top{}, bottom_bottom{}; + ImGuiID bottom_top{}, bottom_bottom{}; ImGui::DockBuilderSplitNode(dock, ImGuiDir_Up, 1.61f * 0.5f, &top, &bottom); ImGui::DockBuilderSplitNode(top, ImGuiDir_Left, 0.66f, &left, &right); - // ImGui::DockBuilderSplitNode(bottom, ImGuiDir_Up, 1.61f * 0.5f, &bottom_top, &bottom_bottom); + ImGui::DockBuilderSplitNode(bottom, ImGuiDir_Up, 1.61f * 0.5f, &bottom_top, &bottom_bottom); ImGui::DockBuilderDockWindow("Attach", left); ImGui::DockBuilderDockWindow("Memory View", left); ImGui::DockBuilderDockWindow("Editor", right); - ImGui::DockBuilderDockWindow("Log", bottom); - // ImGui::DockBuilderDockWindow("Log", bottom_top); - // ImGui::DockBuilderDockWindow("LuaEval", bottom_bottom); + ImGui::DockBuilderDockWindow("Log", bottom_top); + ImGui::DockBuilderDockWindow("LuaEval", bottom_bottom); ImGui::DockBuilderFinish(dock); } @@ -177,7 +176,7 @@ void ReGenny::ui() { m_logger.ui(); ImGui::End(); - /*ImGui::Begin("LuaEval"); + ImGui::Begin("LuaEval"); ImGui::BeginChild("luaeval"); std::array eval{}; @@ -272,7 +271,7 @@ void ReGenny::ui() { ImGui::PopItemWidth(); ImGui::EndChild(); - ImGui::End();*/ + ImGui::End(); ImGui::SetNextWindowPos(ImVec2{m_window_w / 2.0f, m_window_h / 2.0f}, ImGuiCond_Appearing, ImVec2{0.5f, 0.5f}); m_ui.error_popup = ImGui::GetID("Error"); @@ -391,9 +390,9 @@ void ReGenny::menu_ui() { file_open_in_editor(); } - /*if (ImGui::MenuItem("Run Lua Script", "Ctrl+L")) { + if (ImGui::MenuItem("Run Lua Script", "Ctrl+L")) { file_run_lua_script(); - }*/ + } ImGui::EndDisabled(); @@ -660,7 +659,7 @@ void ReGenny::file_quit() { SDL_PushEvent((SDL_Event*)&event); } -/*void ReGenny::file_run_lua_script() { +void ReGenny::file_run_lua_script() { std::scoped_lock _{m_lua_lock}; nfdchar_t* lua_path{}; @@ -678,7 +677,7 @@ void ReGenny::file_quit() { spdlog::error("Unknown error!"); return; } -}*/ +} void ReGenny::action_detach() { spdlog::info("Detaching..."); @@ -1162,7 +1161,7 @@ void ReGenny::set_type() { m_cfg, *m_sdk, dynamic_cast(m_type), *m_process, m_project.props[m_project.type_chosen]); } -/*void ReGenny::reset_lua_state() { +void ReGenny::reset_lua_state() { std::scoped_lock _{m_lua_lock}; m_lua = std::make_unique(); @@ -1187,8 +1186,7 @@ void ReGenny::set_type() { } }; - auto create_overlay = lua.safe_script("return function(addr, t) return sdkgenny.StructOverlay(addr, t) -end").get(); + auto create_overlay = lua.safe_script("return function(addr, t) return sdkgenny.StructOverlay(addr, t) end").get(); m_lua->new_usertype("ReGennyClass", sol::no_constructor, @@ -1488,7 +1486,7 @@ end").get(); }; // clang-format on -}*/ +} void ReGenny::parse_file() try { auto sdk = std::make_unique(); diff --git a/src/ReGenny.hpp b/src/ReGenny.hpp index 78f5e29..d1cf003 100644 --- a/src/ReGenny.hpp +++ b/src/ReGenny.hpp @@ -10,7 +10,7 @@ #include #include -// #include +#include #include "Config.hpp" #include "Helpers.hpp" @@ -115,7 +115,7 @@ class ReGenny { std::optional m_cfg_save_time{}; std::recursive_mutex m_lua_lock{}; - // std::unique_ptr m_lua{}; + std::unique_ptr m_lua{}; std::deque m_eval_history{}; int32_t m_eval_history_index{}; bool m_reapply_focus_eval{false}; @@ -133,7 +133,7 @@ class ReGenny { void file_save_as(); void file_open_in_editor(); void file_quit(); - // void file_run_lua_script(); + void file_run_lua_script(); void action_detach(); void action_generate_sdk(); @@ -150,7 +150,7 @@ class ReGenny { void set_type(); void parse_file(); - // void reset_lua_state(); + void reset_lua_state(); void load_cfg(); void save_cfg(); diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt new file mode 100644 index 0000000..2a9598c --- /dev/null +++ b/third_party/CMakeLists.txt @@ -0,0 +1,129 @@ +# imgui +CPMAddPackage( + NAME imgui + GITHUB_REPOSITORY ocornut/imgui + VERSION 1.90.9-docking + DOWNLOAD_ONLY YES +) +if (imgui_ADDED) + file(GLOB imgui_sources ${imgui_SOURCE_DIR}/*.cpp) + add_library(imgui STATIC + ${imgui_sources} + ${imgui_SOURCE_DIR}/backends/imgui_impl_sdl2.cpp + ${imgui_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp + ${imgui_SOURCE_DIR}/misc/cpp/imgui_stdlib.cpp) + target_include_directories(imgui PUBLIC + $ + $ + $) + target_link_libraries(imgui PUBLIC SDL2::SDL2) +endif () + +# fmt +CPMAddPackage("gh:fmtlib/fmt#11.0.2") + +# pegtl +CPMAddPackage("gh:taocpp/pegtl#3.2.7") + +# nativefiledialog +CPMAddPackage( + NAME nativefiledialog + GITHUB_REPOSITORY mlabbe/nativefiledialog + VERSION 1.16 + GIT_TAG release_116 + DOWNLOAD_ONLY YES +) +if (nativefiledialog_ADDED) + add_library( + nativefiledialog STATIC + ${nativefiledialog_SOURCE_DIR}/src/nfd_common.c + ${nativefiledialog_SOURCE_DIR}/src/nfd_win.cpp + ) + target_include_directories(nativefiledialog PUBLIC $/src/include) +endif () + +# spdlog +CPMAddPackage( + NAME spdlog + GITHUB_REPOSITORY gabime/spdlog + VERSION 1.14.1 + OPTIONS + "SPDLOG_FMT_EXTERNAL ON") + +# utfcpp +CPMAddPackage( + NAME utfcpp + GITHUB_REPOSITORY nemtrif/utfcpp + VERSION 4.0.5 + DOWNLOAD_ONLY YES) +if (utfcpp_ADDED) + add_library(utfcpp INTERFACE) + target_include_directories(utfcpp INTERFACE $) + target_compile_definitions(utfcpp INTERFACE UTF_CPP_CPLUSPLUS=202002L) +endif () + +# nlohmann_json +CPMAddPackage("gh:nlohmann/json@3.11.3") + +# SDL2 +CPMAddPackage( + NAME SDL2 + GITHUB_REPOSITORY libsdl-org/SDL + VERSION 2.30.5 + GIT_TAG release-2.30.5 + OPTIONS + "SDL_SHARED OFF" + "SDL_STATIC ON" +) + +# sdkgenny +CPMAddPackage("gh:cursey/sdkgenny#cbf986af49c45afb2016c96202b66d66fa1cbd8e") + +# Lua +CPMAddPackage( + NAME lua + GITHUB_REPOSITORY lua/lua + GIT_TAG v5.4.7 + DOWNLOAD_ONLY TRUE +) +if (lua_ADDED) + file(GLOB lua_sources ${lua_SOURCE_DIR}/*.c) + list(REMOVE_ITEM lua_sources ${lua_SOURCE_DIR}/lua.c ${lua_SOURCE_DIR}/luac.c ${lua_SOURCE_DIR}/onelua.c) + add_library(lua STATIC ${lua_sources}) + target_include_directories(lua PUBLIC $) +endif () + +# sol2 +CPMAddPackage("gh:ThePhD/sol2@3.3.0") + +# luagenny +CPMAddPackage( + NAME luagenny + GITHUB_REPOSITORY praydog/luagenny + GIT_TAG 556c914a846ccf3f358b559e99d4610f71d71c29 + DOWNLOAD_ONLY YES +) +if (luagenny_ADDED) + file(GLOB_RECURSE luagenny_sources ${luagenny_SOURCE_DIR}/src/*.cpp) + add_library(luagenny STATIC ${luagenny_sources}) + target_include_directories(luagenny PUBLIC ${luagenny_SOURCE_DIR}/include) + target_link_libraries(luagenny PUBLIC lua sol2::sol2 sdkgenny::sdkgenny taocpp::pegtl) + if (MSVC) + target_compile_options(luagenny PUBLIC /bigobj) + else () + target_compile_options(luagenny PRIVATE -fdeclspec -Wno-ignored-attributes) + endif () +endif () + +# Glad +add_library(glad STATIC "glad/src/glad.c") +target_include_directories(glad PUBLIC "glad/include") + +# scope_guard +add_library(scope_guard INTERFACE) +target_include_directories(scope_guard INTERFACE "scope_guard") + +# SDL_Trigger +add_library(SDL_Trigger STATIC "SDL_Trigger/SDL_Trigger.cpp") +target_include_directories(SDL_Trigger INTERFACE "SDL_Trigger") +target_link_libraries(SDL_Trigger PUBLIC SDL2::SDL2) diff --git a/thirdparty/SDL_Trigger/sdl_trigger.cpp b/third_party/SDL_Trigger/sdl_trigger.cpp similarity index 100% rename from thirdparty/SDL_Trigger/sdl_trigger.cpp rename to third_party/SDL_Trigger/sdl_trigger.cpp diff --git a/thirdparty/SDL_Trigger/sdl_trigger.h b/third_party/SDL_Trigger/sdl_trigger.h similarity index 100% rename from thirdparty/SDL_Trigger/sdl_trigger.h rename to third_party/SDL_Trigger/sdl_trigger.h diff --git a/thirdparty/glad/include/KHR/khrplatform.h b/third_party/glad/include/KHR/khrplatform.h similarity index 100% rename from thirdparty/glad/include/KHR/khrplatform.h rename to third_party/glad/include/KHR/khrplatform.h diff --git a/thirdparty/glad/include/glad/glad.h b/third_party/glad/include/glad/glad.h similarity index 100% rename from thirdparty/glad/include/glad/glad.h rename to third_party/glad/include/glad/glad.h diff --git a/thirdparty/glad/src/glad.c b/third_party/glad/src/glad.c similarity index 100% rename from thirdparty/glad/src/glad.c rename to third_party/glad/src/glad.c diff --git a/thirdparty/scope_guard/scope_guard.hpp b/third_party/scope_guard/scope_guard.hpp similarity index 100% rename from thirdparty/scope_guard/scope_guard.hpp rename to third_party/scope_guard/scope_guard.hpp diff --git a/vcpkg.json b/vcpkg.json deleted file mode 100644 index db0b011..0000000 --- a/vcpkg.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$cmkr": "This file is automatically generated from cmake.toml - DO NOT EDIT", - "$cmkr-url": "https://github.com/build-cpp/cmkr", - "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json", - "dependencies": [ - { - "name": "imgui", - "features": ["docking-experimental","freetype","sdl2-binding","opengl3-binding"] - }, - "fmt", - "pegtl", - "nativefiledialog", - "spdlog", - "utfcpp", - "nlohmann-json", - { - "name": "glad", - "features": ["gl-api-30"] - }, - "lua", - "sol2" - ], - "description": "", - "name": "regenny", - "version-string": "" -}