add yaze_check_version and core::CheckVersion

This commit is contained in:
scawful
2024-08-10 21:32:16 -04:00
parent caa89ed62d
commit e885c65b6c
4 changed files with 29 additions and 0 deletions

View File

@@ -13,6 +13,7 @@
#include <string>
#include <vector>
#include "absl/status/statusor.h"
#include "absl/strings/str_format.h"
#include "imgui/imgui.h"
@@ -322,6 +323,17 @@ void ApplyBpsPatch(const std::vector<uint8_t> &source,
}
}
absl::StatusOr<std::string> CheckVersion(const char* version) {
std::string version_string = version;
if (version_string != kYazeVersion) {
std::string message = absl::StrFormat(
"Yaze version mismatch: expected %s, got %s", kYazeVersion,
version_string.c_str());
return absl::InvalidArgumentError(message);
}
return version_string;
}
} // namespace core
} // namespace app
} // namespace yaze

View File

@@ -271,6 +271,8 @@ void ApplyBpsPatch(const std::vector<uint8_t> &source,
const std::vector<uint8_t> &patch,
std::vector<uint8_t> &target);
absl::StatusOr<std::string> CheckVersion(const char *version);
} // namespace core
} // namespace app
} // namespace yaze

View File

@@ -1,8 +1,21 @@
#include "yaze.h"
#include <cstdio>
#include "app/rom.h"
#include "app/zelda3/overworld/overworld.h"
void yaze_check_version(const char* version) {
auto version_check = yaze::app::core::CheckVersion(version);
if (!version_check.ok()) {
// Print the error message to the console for a pure C interface.
printf("%s\n", version_check.status().message().c_str());
// Exit the program if the version check fails.
exit(1);
}
return;
}
void yaze_init(yaze_flags* flags) {
if (flags == nullptr) {
return;

View File

@@ -64,6 +64,8 @@ struct yaze_flags {
z3_rom* rom;
};
void yaze_check_version(const char* version);
/**
* @brief Initialize the Yaze library.
*