File diff r21156:d014c518c978 → r21157:dde07ca6be09
src/newgrf.cpp
Show inline comments
 
@@ -455,6 +455,70 @@ typedef std::map<StringID *, uint32> Str
 
static StringIDToGRFIDMapping _string_to_grf_mapping;
 

	
 
/**
 
 * Perform a mapping from TTDPatch's string IDs to OpenTTD's
 
 * string IDs, but only for the ones we are aware off; the rest
 
 * like likely unused and will show a warning.
 
 * @param str the string ID to convert
 
 * @return the converted string ID
 
 */
 
static StringID TTDPStringIDToOTTDStringIDMapping(StringID str)
 
{
 
	/* StringID table for TextIDs 0x4E->0x6D */
 
	static const StringID units_volume[] = {
 
		STR_ITEMS,      STR_PASSENGERS, STR_TONS,       STR_BAGS,
 
		STR_LITERS,     STR_ITEMS,      STR_CRATES,     STR_TONS,
 
		STR_TONS,       STR_TONS,       STR_TONS,       STR_BAGS,
 
		STR_TONS,       STR_TONS,       STR_TONS,       STR_BAGS,
 
		STR_TONS,       STR_TONS,       STR_BAGS,       STR_LITERS,
 
		STR_TONS,       STR_LITERS,     STR_TONS,       STR_ITEMS,
 
		STR_BAGS,       STR_LITERS,     STR_TONS,       STR_ITEMS,
 
		STR_TONS,       STR_ITEMS,      STR_LITERS,     STR_ITEMS
 
	};
 

	
 
	/* A string straight from a NewGRF; this was already translated by MapGRFStringID(). */
 
	assert(!IsInsideMM(str, 0xD000, 0xD7FF));
 

	
 
#define TEXTID_TO_STRINGID(begin, end, stringid, stringend) \
 
	assert_compile(stringend - stringid == end - begin); \
 
	if (str >= begin && str <= end) return str + (stringid - begin)
 

	
 
	/* We have some changes in our cargo strings, resulting in some missing. */
 
	TEXTID_TO_STRINGID(0x000E, 0x002D, STR_CARGO_PLURAL_NOTHING,                      STR_CARGO_PLURAL_FIZZY_DRINKS);
 
	TEXTID_TO_STRINGID(0x002E, 0x004D, STR_CARGO_SINGULAR_NOTHING,                    STR_CARGO_SINGULAR_FIZZY_DRINK);
 
	if (str >= 0x004E && str <= 0x006D) return units_volume[str - 0x004E];
 
	TEXTID_TO_STRINGID(0x006E, 0x008D, STR_QUANTITY_NOTHING,                          STR_QUANTITY_FIZZY_DRINKS);
 
	TEXTID_TO_STRINGID(0x008E, 0x00AD, STR_ABBREV_NOTHING,                            STR_ABBREV_FIZZY_DRINKS);
 
	TEXTID_TO_STRINGID(0x00D1, 0x00E0, STR_COLOUR_DARK_BLUE,                          STR_COLOUR_WHITE);
 

	
 
	/* Map building names according to our lang file changes. There are several
 
	 * ranges of house ids, all of which need to be remapped to allow newgrfs
 
	 * to use original house names. */
 
	TEXTID_TO_STRINGID(0x200F, 0x201F, STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1,    STR_TOWN_BUILDING_NAME_OLD_HOUSES_1);
 
	TEXTID_TO_STRINGID(0x2036, 0x2041, STR_TOWN_BUILDING_NAME_COTTAGES_1,             STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1);
 
	TEXTID_TO_STRINGID(0x2059, 0x205C, STR_TOWN_BUILDING_NAME_IGLOO_1,                STR_TOWN_BUILDING_NAME_PIGGY_BANK_1);
 

	
 
	/* Same thing for industries */
 
	TEXTID_TO_STRINGID(0x4802, 0x4826, STR_INDUSTRY_NAME_COAL_MINE,                   STR_INDUSTRY_NAME_SUGAR_MINE);
 
	TEXTID_TO_STRINGID(0x482D, 0x482E, STR_NEWS_INDUSTRY_CONSTRUCTION,                STR_NEWS_INDUSTRY_PLANTED);
 
	TEXTID_TO_STRINGID(0x4832, 0x4834, STR_NEWS_INDUSTRY_CLOSURE_GENERAL,             STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES);
 
	TEXTID_TO_STRINGID(0x4835, 0x4838, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM);
 
	TEXTID_TO_STRINGID(0x4839, 0x483A, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM);
 

	
 
	switch (str) {
 
		case 0x4830: return STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY;
 
		case 0x4831: return STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED;
 
		case 0x483B: return STR_ERROR_CAN_ONLY_BE_POSITIONED;
 
	}
 
#undef TEXTID_TO_STRINGID
 

	
 
	if (str == STR_NULL) return STR_EMPTY;
 

	
 
	DEBUG(grf, 0, "Unknown StringID 0x%04X remapped to STR_EMPTY. Please open a Feature Request if you need it", str);
 

	
 
	return STR_EMPTY;
 
}
 

	
 
/**
 
 * Used when setting an object's property to map to the GRF's strings
 
 * while taking in consideration the "drift" between TTDPatch string system and OpenTTD's one
 
 * @param grfid Id of the grf file.