From be70a2a8f175e185c22403938c5e4ceb02e98916 Mon Sep 17 00:00:00 2001 From: Mr-Wiseguy Date: Mon, 2 Sep 2024 20:00:47 -0400 Subject: [PATCH] Parse version number from a string and provide it to the runtime --- assets/launcher.rml | 2 +- lib/N64ModernRuntime | 2 +- src/main/main.cpp | 9 +++++++++ src/ui/ui_launcher.cpp | 6 ++++-- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/assets/launcher.rml b/assets/launcher.rml index d4a77d1..6496117 100644 --- a/assets/launcher.rml +++ b/assets/launcher.rml @@ -58,7 +58,7 @@
- +
diff --git a/lib/N64ModernRuntime b/lib/N64ModernRuntime index 5699906..09f5759 160000 --- a/lib/N64ModernRuntime +++ b/lib/N64ModernRuntime @@ -1 +1 @@ -Subproject commit 5699906f34fcc82905303092d081ad92aa74f926 +Subproject commit 09f5759d3a68437d407d54922e3fddf0c52f4dad diff --git a/src/main/main.cpp b/src/main/main.cpp index 0fbf6f6..cc34fa8 100644 --- a/src/main/main.cpp +++ b/src/main/main.cpp @@ -37,6 +37,8 @@ #include "../../lib/rt64/src/contrib/stb/stb_image.h" +const std::string version_string = "1.2.0-dev"; + template void exit_error(const char* str, Ts ...args) { // TODO pop up an error @@ -527,6 +529,12 @@ void release_preload(PreloadContext& context) { #endif int main(int argc, char** argv) { + recomp::Version project_version{}; + if (!recomp::Version::from_string(version_string, project_version)) { + ultramodern::error_handling::message_box(("Invalid version string: " + version_string).c_str()); + return EXIT_FAILURE; + } + // Map this executable into memory and lock it, which should keep it in physical memory. This ensures // that there are no stutters from the OS having to load new pages of the executable whenever a new code page is run. PreloadContext preload_context; @@ -625,6 +633,7 @@ int main(int argc, char** argv) { recomp::start( 64 * 1024 * 1024, // 64MB to have plenty of room for loading mods + project_version, {}, rsp_callbacks, renderer_callbacks, diff --git a/src/ui/ui_launcher.cpp b/src/ui/ui_launcher.cpp index b4b6312..f699eb7 100644 --- a/src/ui/ui_launcher.cpp +++ b/src/ui/ui_launcher.cpp @@ -6,7 +6,7 @@ #include "nfd.h" #include -std::string version_number = "v1.1.1"; +static std::string version_string; Rml::DataModelHandle model_handle; bool mm_rom_valid = false; @@ -103,7 +103,9 @@ public: Rml::DataModelConstructor constructor = context->CreateDataModel("launcher_model"); constructor.Bind("mm_rom_valid", &mm_rom_valid); - constructor.Bind("version_number", &version_number); + + version_string = recomp::get_project_version().to_string(); + constructor.Bind("version_number", &version_string); model_handle = constructor.GetModelHandle(); }