18#include "table/strings.h"
38 GrfMsg(7,
"TranslateGRFStrings: GRFID {} unknown, skipping action 13",
FormatArrayAsHex(grfid));
47 error->
data =
GetString(STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE);
57 uint8_t language = _cur_gps.grffile->grf_version >= 8 ? buf.
ReadByte() : 0x7F;
58 uint8_t num_strings = buf.
ReadByte();
61 if (!((first_id >= 0xD000 && first_id + num_strings <= 0xD400) || (first_id >= 0xD800 && first_id + num_strings <= 0xE000))) {
62 GrfMsg(7,
"TranslateGRFStrings: Attempting to set out-of-range string IDs in action 13 (first: 0x{:04X}, number: 0x{:02X})", first_id, num_strings);
66 for (uint i = 0; i < num_strings && buf.HasData(); i++) {
70 GrfMsg(7,
"TranslateGRFString: Ignoring empty string.");
Class to read from a NewGRF file.
uint16_t ReadWord()
Read a single Word (16 bits).
T ReadLabel()
Read a label.
std::string_view ReadString()
Read a NUL-terminated string.
uint8_t ReadByte()
Read a single byte (8 bits).
Functions related to debugging.
GRFError * DisableGrf(StringID message, GRFConfig *config)
Disable a GRF.
static void TranslateGRFStrings(ByteReader &buf)
Action 0x13 - Load translation.
NewGRF buffer reader definition.
GRFConfig * GetGRFConfig(GrfID grfid, uint32_t mask)
Retrieve a NewGRF from the current config by its grfid.
@ Initialised
GRF file has been initialised.
@ Activated
GRF file has been activated.
NewGRF internal processing state.
static StringID AddGRFString(GrfID grfid, GRFStringID stringid, GRFLanguage langid_to_add, bool allow_newlines, std::string_view text_to_add, StringID def_string)
Add the new read string into our structure.
Header of Action 04 "universal holder" structure and functions.
StrongType::Typedef< uint32_t, struct GRFStringIDTag, StrongType::Compare, StrongType::Integer > GRFStringID
Type for GRF-internal string IDs.
Label< struct GrfIDTag > GrfID
The unique identifier of a NewGRF.
A number of safeguards to prevent using unsafe methods.
Definition of base types and functions in a cross-platform compatible way.
std::string FormatArrayAsHex(std::span< const uint8_t > data)
Format a byte array into a continuous hex string.
Functions related to low-level strings.
std::string GetString(StringID string)
Resolve the given StringID into a std::string with formatting but no parameters.
Functions related to OTTD's strings.
Information about GRF, used in the game and (part of it) in savegames.
Information about why GRF had problems during initialisation.
std::string data
Additional data for message and custom_message.
static void FileScan(ByteReader &buf)
Implementation of the GrfLoadingStage::FileScan stage of this action.
static void SafetyScan(ByteReader &buf)
Implementation of the GrfLoadingStage::SafetyScan stage of this action.
static void Reserve(ByteReader &buf)
Implementation of the GrfLoadingStage::Reserve stage of this action.
static void Activation(ByteReader &buf)
Implementation of the GrfLoadingStage::Activation stage of this action.
static void Init(ByteReader &buf)
Implementation of the GrfLoadingStage::Init stage of this action.
static void LabelScan(ByteReader &buf)
Implementation of the GrfLoadingStage::LabelScan stage of this action.