diff --git a/src/strings.cpp b/src/strings.cpp index 69c1791f30..51f5eb2db2 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -203,6 +203,24 @@ void CopyOutDParam(std::vector &backup, size_t num, Strin } } +/** + * Checks whether the global string parameters have changed compared to the given backup. + * @param backup The backup to check against. + * @return True when the parameters have changed, otherwise false. + */ +bool HaveDParamChanged(const std::vector &backup) +{ + bool changed = false; + for (size_t i = 0; !changed && i < backup.size(); i++) { + if (backup[i].string.has_value()) { + changed = backup[i].string.value() != (const char *)(size_t)_global_string_params.GetParam(i); + } else { + changed = backup[i].data != _global_string_params.GetParam(i); + } + } + return changed; +} + static void StationGetSpecialString(StringBuilder &builder, StationFacility x); static void GetSpecialTownNameString(StringBuilder &builder, int ind, uint32 seed); static void GetSpecialNameString(StringBuilder &builder, int ind, StringParameters &args); diff --git a/src/strings_func.h b/src/strings_func.h index e05085ba7b..3518725c68 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -89,6 +89,7 @@ void SetDParamStr(size_t n, std::string &&str) = delete; // block passing tempor void CopyInDParam(const span backup); void CopyOutDParam(std::vector &backup, size_t num); void CopyOutDParam(std::vector &backup, size_t num, StringID string); +bool HaveDParamChanged(const std::vector &backup); uint64_t GetDParam(size_t n);