MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / LoadTranslationTable

Function LoadTranslationTable

src/newgrf/newgrf_act0_globalvar.cpp:45–68  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

43 */
44template <typename T, typename TGetTableFunc>
45static ChangeInfoResult LoadTranslationTable(uint first, uint last, ByteReader &buf, TGetTableFunc gettable, std::string_view name)
46{
47 if (first != 0) {
48 GrfMsg(1, "LoadTranslationTable: {} translation table must start at zero", name);
49 return CIR_INVALID_ID;
50 }
51
52 std::vector<T> &translation_table = gettable(*_cur_gps.grffile);
53 translation_table.clear();
54 translation_table.reserve(last);
55 for (uint id = first; id < last; ++id) {
56 translation_table.push_back(T(std::byteswap(buf.ReadDWord())));
57 }
58
59 GRFFile *grf_override = GetCurrentGRFOverride();
60 if (grf_override != nullptr) {
61 /* GRF override is present, copy the translation table to the overridden GRF as well. */
62 GrfMsg(1, "LoadTranslationTable: Copying {} translation table to override GRFID {:08X}", name, std::byteswap(grf_override->grfid));
63 std::vector<T> &override_table = gettable(*grf_override);
64 override_table = translation_table;
65 }
66
67 return CIR_SUCCESS;
68}
69
70static ChangeInfoResult LoadBadgeTranslationTable(uint first, uint last, ByteReader &buf, std::vector<BadgeID> &translation_table, std::string_view name)
71{

Callers

nothing calls this directly

Calls 6

byteswapFunction · 0.85
GetCurrentGRFOverrideFunction · 0.85
reserveMethod · 0.80
push_backMethod · 0.80
ReadDWordMethod · 0.80
clearMethod · 0.45

Tested by

no test coverage detected