OpenTTD Source  12.0-beta2
newgrf_text.h File Reference
#include "string_type.h"
#include "strings_type.h"
#include "core/smallvec_type.hpp"
#include "table/control_codes.h"
#include <utility>
#include <vector>
#include <string>

Go to the source code of this file.

Data Structures

struct  GRFText
 A GRF text with associated language ID. More...
 
struct  LanguageMap
 Mapping of language data between a NewGRF and OpenTTD. More...
 
struct  LanguageMap::Mapping
 Mapping between NewGRF and OpenTTD IDs. More...
 

Typedefs

typedef std::vector< GRFTextGRFTextList
 A GRF text with a list of translations.
 
typedef std::shared_ptr< GRFTextListGRFTextWrapper
 Reference counted wrapper around a GRFText pointer.
 

Functions

StringID AddGRFString (uint32 grfid, uint16 stringid, byte langid, bool new_scheme, bool allow_newlines, const char *text_to_add, StringID def_string)
 Add the new read string into our structure.
 
StringID GetGRFStringID (uint32 grfid, StringID stringid)
 Returns the index for this stringid associated with its grfID.
 
const char * GetGRFStringFromGRFText (const GRFTextList &text_list)
 Get a C-string from a GRFText-list. More...
 
const char * GetGRFStringFromGRFText (const GRFTextWrapper &text)
 Get a C-string from a GRFText-list. More...
 
const char * GetGRFStringPtr (uint16 stringid)
 Get a C-string from a stringid set by a newgrf.
 
void CleanUpStrings ()
 House cleaning. More...
 
void SetCurrentGrfLangID (byte language_id)
 Equivalence Setter function between game and newgrf langID. More...
 
std::string TranslateTTDPatchCodes (uint32 grfid, uint8 language_id, bool allow_newlines, const std::string &str, StringControlCode byte80=SCC_NEWGRF_PRINT_WORD_STRING_ID)
 Translate TTDPatch string codes into something OpenTTD can handle (better). More...
 
void AddGRFTextToList (GRFTextList &list, byte langid, uint32 grfid, bool allow_newlines, const char *text_to_add)
 Add a string to a GRFText list. More...
 
void AddGRFTextToList (GRFTextWrapper &list, byte langid, uint32 grfid, bool allow_newlines, const char *text_to_add)
 Add a string to a GRFText list. More...
 
void AddGRFTextToList (GRFTextWrapper &list, const std::string &text_to_add)
 Add a GRFText to a GRFText list. More...
 
bool CheckGrfLangID (byte lang_id, byte grf_version)
 
void StartTextRefStackUsage (const struct GRFFile *grffile, byte numEntries, const uint32 *values=nullptr)
 
void StopTextRefStackUsage ()
 Stop using the TTDP compatible string code parsing.
 
void RewindTextRefStack ()
 
bool UsingNewGRFTextStack ()
 Check whether the NewGRF text stack is in use. More...
 
struct TextRefStackCreateTextRefStackBackup ()
 Create a backup of the current NewGRF text stack. More...
 
void RestoreTextRefStackBackup (struct TextRefStack *backup)
 Restore a copy of the text stack to the used stack. More...
 
uint RemapNewGRFStringControlCode (uint scc, char *buf_start, char **buff, const char **str, int64 *argv, uint argv_size, bool modify_argv)
 FormatString for NewGRF specific "magic" string control codes. More...
 

Variables

static const WChar NFO_UTF8_IDENTIFIER = 0x00DE
 This character, the thorn ('รพ'), indicates a unicode string to NFO.
 

Detailed Description

Header of Action 04 "universal holder" structure and functions

Definition in file newgrf_text.h.

Function Documentation

◆ AddGRFTextToList() [1/3]

void AddGRFTextToList ( GRFTextList list,
byte  langid,
uint32  grfid,
bool  allow_newlines,
const char *  text_to_add 
)

Add a string to a GRFText list.

Parameters
listThe list where the text should be added to.
langidThe language of the new text.
grfidThe grfid where this string is defined.
allow_newlinesWhether newlines are allowed in this string.
text_to_addThe text to add to the list.
Note
All text-codes will be translated.

Definition at line 516 of file newgrf_text.cpp.

References AddGRFTextToList(), and TranslateTTDPatchCodes().

◆ AddGRFTextToList() [2/3]

void AddGRFTextToList ( GRFTextWrapper list,
byte  langid,
uint32  grfid,
bool  allow_newlines,
const char *  text_to_add 
)

Add a string to a GRFText list.

Parameters
listThe list where the text should be added to.
langidThe language of the new text.
grfidThe grfid where this string is defined.
allow_newlinesWhether newlines are allowed in this string.
text_to_addThe text to add to the list.
Note
All text-codes will be translated.

Definition at line 530 of file newgrf_text.cpp.

References AddGRFTextToList().

◆ AddGRFTextToList() [3/3]

void AddGRFTextToList ( GRFTextWrapper list,
const std::string &  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
listThe list where the text should be added to.
text_to_addThe text to add to the list.

Definition at line 542 of file newgrf_text.cpp.

References AddGRFTextToList().

◆ CleanUpStrings()

void CleanUpStrings ( )

House cleaning.

Remove all strings and reset the text counter.

Definition at line 695 of file newgrf_text.cpp.

Referenced by ResetNewGRFData().

◆ CreateTextRefStackBackup()

struct TextRefStack* CreateTextRefStackBackup ( )

Create a backup of the current NewGRF text stack.

Returns
A copy of the current text stack.

Definition at line 788 of file newgrf_text.cpp.

References _newgrf_textrefstack.

Referenced by FormatString().

◆ GetGRFStringFromGRFText() [1/2]

const char* 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_listThe GRFTextList to get the string from.

Definition at line 620 of file newgrf_text.cpp.

References _currentLangID.

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

◆ GetGRFStringFromGRFText() [2/2]

const char* 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
textThe GRFTextList to get the string from.

Definition at line 645 of file newgrf_text.cpp.

References GetGRFStringFromGRFText().

◆ RemapNewGRFStringControlCode()

uint RemapNewGRFStringControlCode ( uint  scc,
char *  buf_start,
char **  buff,
const char **  str,
int64 *  argv,
uint  argv_size,
bool  modify_argv 
)

◆ RestoreTextRefStackBackup()

void RestoreTextRefStackBackup ( struct TextRefStack backup)

Restore a copy of the text stack to the used stack.

Parameters
backupThe copy to restore.

Definition at line 797 of file newgrf_text.cpp.

References _newgrf_textrefstack.

Referenced by FormatString().

◆ SetCurrentGrfLangID()

void SetCurrentGrfLangID ( byte  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_idiso code of current selection

Definition at line 672 of file newgrf_text.cpp.

References _currentLangID.

◆ TranslateTTDPatchCodes()

std::string TranslateTTDPatchCodes ( uint32  grfid,
uint8  language_id,
bool  allow_newlines,
const std::string &  str,
StringControlCode  byte80 
)

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

Parameters
grfidThe (NewGRF) ID associated with this string
language_idThe (NewGRF) language ID associated with this string.
allow_newlinesWhether newlines are allowed in the string or not.
strThe string to translate.
byte80The control code to use as replacement for the 0x80-value.
Returns
The translated string.

Definition at line 241 of file newgrf_text.cpp.

References NFO_UTF8_IDENTIFIER, Utf8Decode(), and Utf8EncodedCharLen().

Referenced by AddGRFTextToList().

◆ UsingNewGRFTextStack()

bool UsingNewGRFTextStack ( )

Check whether the NewGRF text stack is in use.

Returns
True iff the NewGRF text stack is used.

Definition at line 779 of file newgrf_text.cpp.

References _newgrf_textrefstack.

Referenced by FormatString().