66 static const StringID units_volume[] = {
67 STR_ITEMS, STR_PASSENGERS, STR_TONS, STR_BAGS,
68 STR_LITERS, STR_ITEMS, STR_CRATES, STR_TONS,
69 STR_TONS, STR_TONS, STR_TONS, STR_BAGS,
70 STR_TONS, STR_TONS, STR_TONS, STR_BAGS,
71 STR_TONS, STR_TONS, STR_BAGS, STR_LITERS,
72 STR_TONS, STR_LITERS, STR_TONS, STR_ITEMS,
73 STR_BAGS, STR_LITERS, STR_TONS, STR_ITEMS,
74 STR_TONS, STR_ITEMS, STR_LITERS, STR_ITEMS
78 assert(!
IsInsideMM(str.base(), 0xD000, 0xD7FF));
80#define TEXTID_TO_STRINGID(begin, end, stringid, stringend) \
81 static_assert(stringend - stringid == end - begin); \
82 if (str.base() >= begin && str.base() <= end) return StringID{str.base() + (stringid - begin)}
85 TEXTID_TO_STRINGID(0x000E, 0x002D, STR_CARGO_PLURAL_NOTHING, STR_CARGO_PLURAL_FIZZY_DRINKS);
86 TEXTID_TO_STRINGID(0x002E, 0x004D, STR_CARGO_SINGULAR_NOTHING, STR_CARGO_SINGULAR_FIZZY_DRINK);
87 if (str.base() >= 0x004E && str.base() <= 0x006D)
return units_volume[str.base() - 0x004E];
88 TEXTID_TO_STRINGID(0x006E, 0x008D, STR_QUANTITY_NOTHING, STR_QUANTITY_FIZZY_DRINKS);
89 TEXTID_TO_STRINGID(0x008E, 0x00AD, STR_ABBREV_NOTHING, STR_ABBREV_FIZZY_DRINKS);
90 TEXTID_TO_STRINGID(0x00D1, 0x00E0, STR_COLOUR_DARK_BLUE, STR_COLOUR_WHITE);
95 TEXTID_TO_STRINGID(0x200F, 0x201F, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1, STR_TOWN_BUILDING_NAME_OLD_HOUSES_1);
96 TEXTID_TO_STRINGID(0x2036, 0x2041, STR_TOWN_BUILDING_NAME_COTTAGES_1, STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1);
97 TEXTID_TO_STRINGID(0x2059, 0x205C, STR_TOWN_BUILDING_NAME_IGLOO_1, STR_TOWN_BUILDING_NAME_PIGGY_BANK_1);
100 TEXTID_TO_STRINGID(0x4802, 0x4826, STR_INDUSTRY_NAME_COAL_MINE, STR_INDUSTRY_NAME_SUGAR_MINE);
101 TEXTID_TO_STRINGID(0x482D, 0x482E, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_PLANTED);
102 TEXTID_TO_STRINGID(0x4832, 0x4834, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES);
103 TEXTID_TO_STRINGID(0x4835, 0x4838, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM);
104 TEXTID_TO_STRINGID(0x4839, 0x483A, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM);
106 switch (str.base()) {
107 case 0x4830:
return STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY;
108 case 0x4831:
return STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED;
109 case 0x483B:
return STR_ERROR_CAN_ONLY_BE_POSITIONED;
111#undef TEXTID_TO_STRINGID
113 if (str.base() == 0)
return STR_EMPTY;
115 Debug(grf, 0,
"Unknown StringID 0x{:04X} remapped to STR_EMPTY. Please open a Feature Request if you need it", str);
StringID GetGRFStringID(GrfID grfid, GRFStringID stringid)
Returns the index for this stringid associated with its grfID.
Header of Action 04 "universal holder" structure and functions.
Header of Action 04 "universal holder" structure.
StrongType::Typedef< uint32_t, struct GRFStringIDTag, StrongType::Compare, StrongType::Integer > GRFStringID
Type for GRF-internal string IDs.