mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-06 06:32:56 +01:00
Move RCT2::GetRCTStringBufferLen to RCT12
It’s used in both
This commit is contained in:
@@ -2473,7 +2473,7 @@ namespace RCT1
|
||||
{
|
||||
const auto originalString = _s4.StringTable[stringId % 1024];
|
||||
auto originalStringView = std::string_view(
|
||||
originalString, RCT2::GetRCT2StringBufferLen(originalString, USER_STRING_MAX_LENGTH));
|
||||
originalString, RCT12::GetRCTStringBufferLen(originalString, USER_STRING_MAX_LENGTH));
|
||||
auto asUtf8 = RCT2StringToUTF8(originalStringView, RCT2LanguageId::EnglishUK);
|
||||
auto justText = RCT12RemoveFormattingUTF8(asUtf8);
|
||||
return justText.data();
|
||||
|
||||
@@ -924,3 +924,35 @@ uint8_t ConvertToTD46Flags(const TrackDesignTrackElement& source)
|
||||
|
||||
return trackFlags;
|
||||
}
|
||||
|
||||
namespace RCT12
|
||||
{
|
||||
size_t GetRCTStringBufferLen(const char* buffer, size_t maxBufferLen)
|
||||
{
|
||||
constexpr char MULTIBYTE = static_cast<char>(255);
|
||||
size_t len = 0;
|
||||
for (size_t i = 0; i < maxBufferLen; i++)
|
||||
{
|
||||
auto ch = buffer[i];
|
||||
if (ch == MULTIBYTE)
|
||||
{
|
||||
i += 2;
|
||||
|
||||
// Check if reading two more bytes exceeds max buffer len
|
||||
if (i < maxBufferLen)
|
||||
{
|
||||
len += 3;
|
||||
}
|
||||
}
|
||||
else if (ch == '\0')
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
len++;
|
||||
}
|
||||
}
|
||||
return len;
|
||||
}
|
||||
} // namespace RCT12
|
||||
|
||||
@@ -914,3 +914,12 @@ enum class TD46Flags : uint8_t
|
||||
|
||||
void ConvertFromTD46Flags(TrackDesignTrackElement& target, uint8_t flags);
|
||||
uint8_t ConvertToTD46Flags(const TrackDesignTrackElement& source);
|
||||
|
||||
namespace RCT12
|
||||
{
|
||||
/**
|
||||
* Iterates an RCT string buffer and returns the length of the string in bytes.
|
||||
* Handles single and multi-byte strings.
|
||||
*/
|
||||
size_t GetRCTStringBufferLen(const char* buffer, size_t maxBufferLen);
|
||||
} // namespace RCT12
|
||||
|
||||
@@ -87,35 +87,6 @@ namespace RCT2
|
||||
}
|
||||
}
|
||||
|
||||
size_t GetRCT2StringBufferLen(const char* buffer, size_t maxBufferLen)
|
||||
{
|
||||
constexpr char MULTIBYTE = static_cast<char>(255);
|
||||
size_t len = 0;
|
||||
for (size_t i = 0; i < maxBufferLen; i++)
|
||||
{
|
||||
auto ch = buffer[i];
|
||||
if (ch == MULTIBYTE)
|
||||
{
|
||||
i += 2;
|
||||
|
||||
// Check if reading two more bytes exceeds max buffer len
|
||||
if (i < maxBufferLen)
|
||||
{
|
||||
len += 3;
|
||||
}
|
||||
}
|
||||
else if (ch == '\0')
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
len++;
|
||||
}
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
uint8_t Ride::GetMinCarsPerTrain() const
|
||||
{
|
||||
return MinMaxCarsPerTrain >> 4;
|
||||
|
||||
@@ -1048,12 +1048,6 @@ namespace RCT2
|
||||
track_type_t RCT2TrackTypeToOpenRCT2(RCT12TrackType origTrackType, ride_type_t rideType, bool convertFlat);
|
||||
RCT12TrackType OpenRCT2TrackTypeToRCT2(track_type_t origTrackType);
|
||||
|
||||
/**
|
||||
* Iterates an RCT2 string buffer and returns the length of the string in bytes.
|
||||
* Handles single and multi-byte strings.
|
||||
*/
|
||||
size_t GetRCT2StringBufferLen(const char* buffer, size_t maxBufferLen);
|
||||
|
||||
struct FootpathMapping
|
||||
{
|
||||
std::string_view Original;
|
||||
|
||||
@@ -2327,7 +2327,7 @@ namespace RCT2
|
||||
{
|
||||
const auto originalString = _s6.CustomStrings[stringId % 1024];
|
||||
auto originalStringView = std::string_view(
|
||||
originalString, GetRCT2StringBufferLen(originalString, USER_STRING_MAX_LENGTH));
|
||||
originalString, RCT12::GetRCTStringBufferLen(originalString, USER_STRING_MAX_LENGTH));
|
||||
auto asUtf8 = RCT2StringToUTF8(originalStringView, RCT2LanguageId::EnglishUK);
|
||||
auto justText = RCT12RemoveFormattingUTF8(asUtf8);
|
||||
return justText.data();
|
||||
|
||||
Reference in New Issue
Block a user