OpenTTD Source: src/newgrf_text.h File Reference

OpenTTD Source 15.0-RC2

Functions
newgrf_text.h File Reference

Header of Action 04 "universal holder" structure and functions. More...

`#include "newgrf_text_type.h"`
`#include "strings_type.h"`
`#include "table/control_codes.h"`

Go to the source code of this file.

## Functions
StringID | AddGRFString (uint32_t grfid, GRFStringID stringid, uint8_t langid, bool new_scheme, bool allow_newlines, std::string_view text_to_add, StringID def_string)
| Add the new read string into our structure.
StringID | GetGRFStringID (uint32_t grfid, GRFStringID stringid)
| Returns the index for this stringid associated with its grfID.
std::optional< std::string_view > | GetGRFStringFromGRFText (const GRFTextList &text_list)
| Get a C-string from a GRFText-list.
std::optional< std::string_view > | GetGRFStringFromGRFText (const GRFTextWrapper &text)
| Get a C-string from a GRFText-list.
std::string_view | GetGRFStringPtr (StringIndexInTab stringid)
| Get a C-string from a stringid set by a newgrf.
void | CleanUpStrings ()
| House cleaning.
void | SetCurrentGrfLangID (uint8_t language_id)
| Equivalence Setter function between game and newgrf langID.
std::string | TranslateTTDPatchCodes (uint32_t grfid, uint8_t language_id, bool allow_newlines, std::string_view str, StringControlCode byte80=SCC_NEWGRF_PRINT_WORD_STRING_ID)
| Translate TTDPatch string codes into something OpenTTD can handle (better).
void | AddGRFTextToList (GRFTextList &list, uint8_t langid, uint32_t grfid, bool allow_newlines, std::string_view text_to_add)
| Add a string to a GRFText list.
void | AddGRFTextToList (GRFTextWrapper &list, uint8_t langid, uint32_t grfid, bool allow_newlines, std::string_view text_to_add)
| Add a string to a GRFText list.
void | AddGRFTextToList (GRFTextWrapper &list, std::string_view text_to_add)
| Add a GRFText to a GRFText list.
bool | CheckGrfLangID (uint8_t lang_id, uint8_t grf_version)
std::vector< StringParameter > | GetGRFStringTextStackParameters (const struct GRFFile *grffile, StringID stringid, std::span< const int32_t > textstack)
std::string | GetGRFStringWithTextStack (const struct GRFFile *grffile, GRFStringID grfstringid, std::span< const int32_t > textstack)
| Format a GRF string using the text ref stack for parameters.

## Detailed Description

Header of Action 04 "universal holder" structure and functions.

Definition in file newgrf_text.h.

## Function Documentation

## ◆ AddGRFString()

StringID AddGRFString | ( | uint32_t | grfid,
|  | GRFStringID | stringid,
|  | uint8_t | langid,
|  | bool | new_scheme,
|  | bool | allow_newlines,
|  | std::string_view | text_to_add,
|  | StringID | def_string
| ) |  |

Add the new read string into our structure.

Definition at line 536 of file newgrf_text.cpp.

References AddGRFString(), AddGRFTextToList(), MakeStringID(), TAB_SIZE_NEWGRF, TEXT_TAB_NEWGRF_START, and TranslateTTDPatchCodes().

Referenced by AddGRFString(), FeatureTownName(), and TranslateGRFStrings().

## ◆ AddGRFTextToList() [1/3]

void AddGRFTextToList | ( | GRFTextList & | list,
|  | uint8_t | langid,
|  | uint32_t | grfid,
|  | bool | allow_newlines,
|  | std::string_view | text_to_add
| ) |  |

Add a string to a GRFText list.

Parameters

  list | The list where the text should be added to.
  langid | The language of the new text.
  grfid | The grfid where this string is defined.
  allow_newlines | Whether newlines are allowed in this string.
  text_to_add | The text to add to the list.

Note
  All text-codes will be translated.

Definition at line 501 of file newgrf_text.cpp.

References AddGRFTextToList(), and TranslateTTDPatchCodes().

## ◆ AddGRFTextToList() [2/3]

void AddGRFTextToList | ( | GRFTextWrapper & | list,
|  | std::string_view | text_to_add
| ) |  |

Add a GRFText to a GRFText list.

The text should not contain any text-codes. The text will be added as a 'default language'-text.

Parameters

  list | The list where the text should be added to.
  text_to_add | The text to add to the list.

Definition at line 527 of file newgrf_text.cpp.

References AddGRFTextToList().

## ◆ AddGRFTextToList() [3/3]

void AddGRFTextToList | ( | GRFTextWrapper & | list,
|  | uint8_t | langid,
|  | uint32_t | grfid,
|  | bool | allow_newlines,
|  | std::string_view | text_to_add
| ) |  |

Add a string to a GRFText list.

Parameters

  list | The list where the text should be added to.
  langid | The language of the new text.
  grfid | The grfid where this string is defined.
  allow_newlines | Whether newlines are allowed in this string.
  text_to_add | The text to add to the list.

Note
  All text-codes will be translated.

Definition at line 515 of file newgrf_text.cpp.

References AddGRFTextToList().

## ◆ CheckGrfLangID()

bool CheckGrfLangID | ( | uint8_t | lang_id,
|  | uint8_t | grf_version
| ) |  |

Definition at line 657 of file newgrf_text.cpp.

## ◆ CleanUpStrings()

void CleanUpStrings | ( |  | ) |

House cleaning.

Remove all strings.

Definition at line 675 of file newgrf_text.cpp.

Referenced by ResetNewGRFData().

## ◆ GetGRFStringFromGRFText() [1/2]

std::optional< std::string_view > GetGRFStringFromGRFText | ( | const GRFTextList & | text_list | ) |

Get a C-string from a GRFText-list.

If there is a translation for the current language it is returned, otherwise the default translation is returned. If there is neither a default nor a translation for the current language nullptr is returned.

Parameters

  text_list | The GRFTextList to get the string from.

Definition at line 599 of file newgrf_text.cpp.

References _current_lang_id.

Referenced by NewGRFParametersWindow::DrawWidget(), GRFConfig::GetDescription(), GetGRFStringFromGRFText(), GetGRFStringPtr(), GRFConfig::GetName(), GRFConfig::GetURL(), NewGRFParametersWindow::OnClick(), and NewGRFParametersWindow::UpdateWidgetSize().

## ◆ GetGRFStringFromGRFText() [2/2]

std::optional< std::string_view > GetGRFStringFromGRFText | ( | const GRFTextWrapper & | text | ) |

Get a C-string from a GRFText-list.

If there is a translation for the current language it is returned, otherwise the default translation is returned. If there is neither a default nor a translation for the current language nullptr is returned.

Parameters

  text | The GRFTextList to get the string from.

Definition at line 624 of file newgrf_text.cpp.

References GetGRFStringFromGRFText().

## ◆ GetGRFStringID()

StringID GetGRFStringID | ( | uint32_t | grfid,
|  | GRFStringID | stringid
| ) |  |

Returns the index for this stringid associated with its grfID.

Definition at line 580 of file newgrf_text.cpp.

References MakeStringID(), and TEXT_TAB_NEWGRF_START.

Referenced by CheckTrainAttachment(), CmdStartStopVehicle(), GetAirportTextCallback(), GetCargoSubtypeText(), GetErrorMessageFromLocationCallbackResult(), GetGRFStringWithTextStack(), GetHouseName(), and MapGRFStringID().

## ◆ GetGRFStringPtr()

std::string_view GetGRFStringPtr | ( | StringIndexInTab | stringid | ) |

Get a C-string from a stringid set by a newgrf.

Definition at line 632 of file newgrf_text.cpp.

References GetGRFStringFromGRFText().

Referenced by GetStringWithArgs().

## ◆ GetGRFStringWithTextStack()

std::string GetGRFStringWithTextStack | ( | const struct GRFFile * | grffile,
|  | GRFStringID | grfstringid,
|  | std::span< const int32_t > | textstack
| ) |  |

Format a GRF string using the text ref stack for parameters.

Parameters

  grffile | GRFFile of string.
  grfstringid | GRFStringID of string.
  textstack | Text parameter stack.

Returns
  Formatted string.

Definition at line 999 of file newgrf_text.cpp.

References GetGRFStringID(), GetGRFStringTextStackParameters(), and GetStringWithArgs().

Referenced by IndustryViewWindow::DrawInfo(), BuildIndustryWindow::DrawWidget(), BuildObjectWindow::DrawWidget(), FormatString(), GetCargoSuffix(), and GetNewGRFAdditionalText().

## ◆ SetCurrentGrfLangID()

void SetCurrentGrfLangID | ( | uint8_t | language_id | ) |

Equivalence Setter function between game and newgrf langID.

This function will adjust _currentLangID as to what is the LangID of the current language set by the user. This function is called after the user changed language, from strings.cpp:ReadLanguagePack

Parameters

  language_id | iso code of current selection

Definition at line 652 of file newgrf_text.cpp.

References _current_lang_id.

Referenced by ReadLanguagePack().

## ◆ TranslateTTDPatchCodes()

std::string TranslateTTDPatchCodes | ( | uint32_t | grfid,
|  | uint8_t | language_id,
|  | bool | allow_newlines,
|  | std::string_view | str,
|  | StringControlCode | byte80
| ) |  |

Translate TTDPatch string codes into something OpenTTD can handle (better).

Parameters

  grfid | The (NewGRF) ID associated with this string
  language_id | The (NewGRF) language ID associated with this string.
  allow_newlines | Whether newlines are allowed in the string or not.
  str | The string to translate.
  byte80 | The control code to use as replacement for the 0x80-value.

Returns
  The translated string.

Definition at line 237 of file newgrf_text.cpp.

References StringConsumer::AnyBytesLeft(), CS_ALPHANUMERAL, LanguageMap::GetLanguageMap(), LanguageMap::GetMapping(), IsValidChar(), MapGRFStringID(), NFO_UTF8_IDENTIFIER, BaseStringBuilder::PutChar(), BaseStringBuilder::PutUtf8(), StringConsumer::ReadUint16LE(), StringConsumer::ReadUint8(), StringConsumer::ReadUtf8If(), SCC_BIGFONT, SCC_NEWGRF_DISCARD_WORD, SCC_NEWGRF_PRINT_BYTE_HEX, SCC_NEWGRF_PRINT_DWORD_DATE_LONG, SCC_NEWGRF_PRINT_DWORD_FORCE, SCC_NEWGRF_PRINT_DWORD_HEX, SCC_NEWGRF_PRINT_DWORD_SIGNED, SCC_NEWGRF_PRINT_QWORD_CURRENCY, SCC_NEWGRF_PRINT_QWORD_HEX, SCC_NEWGRF_PRINT_WORD_DATE_LONG, SCC_NEWGRF_PRINT_WORD_HEX, SCC_NEWGRF_PRINT_WORD_STATION_NAME, SCC_NEWGRF_PRINT_WORD_VOLUME_LONG, SCC_NEWGRF_PRINT_WORD_WEIGHT_LONG, SCC_NEWGRF_PUSH_WORD, SCC_NEWGRF_ROTATE_TOP_4_WORDS, SCC_NEWGRF_STRINL, SCC_TINYFONT, StringConsumer::SkipUint8(), and StringConsumer::TryReadUtf8().

Referenced by AddGRFString(), AddGRFTextToList(), and FeatureTownName().