mirror of https://github.com/OpenTTD/OpenTTD
parent
1d18b4a80b
commit
ae1f469aac
|
@ -765,6 +765,16 @@ static int DeterminePluralForm(int64_t count, uint plural_form)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void SkipStringChoice(StringConsumer &consumer)
|
||||||
|
{
|
||||||
|
uint n = consumer.ReadUint8();
|
||||||
|
uint len = 0;
|
||||||
|
for (uint i = 0; i != n; i++) {
|
||||||
|
len += consumer.ReadUint8();
|
||||||
|
}
|
||||||
|
consumer.Skip(len);
|
||||||
|
}
|
||||||
|
|
||||||
static void ParseStringChoice(StringConsumer &consumer, uint form, StringBuilder &builder)
|
static void ParseStringChoice(StringConsumer &consumer, uint form, StringBuilder &builder)
|
||||||
{
|
{
|
||||||
/* <NUM> {Length of each string} {each string} */
|
/* <NUM> {Length of each string} {each string} */
|
||||||
|
@ -1196,6 +1206,7 @@ static void FormatString(StringBuilder &builder, std::string_view str_arg, Strin
|
||||||
if (v != nullptr) {
|
if (v != nullptr) {
|
||||||
ParseStringChoice(consumer, DeterminePluralForm(static_cast<int64_t>(*v), plural_form), builder);
|
ParseStringChoice(consumer, DeterminePluralForm(static_cast<int64_t>(*v), plural_form), builder);
|
||||||
} else {
|
} else {
|
||||||
|
SkipStringChoice(consumer);
|
||||||
builder += "(invalid PLURAL parameter)";
|
builder += "(invalid PLURAL parameter)";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue