mirror of https://github.com/OpenTTD/OpenTTD
(svn r6995) - Codechange: NewGRF; strip bit 7 of the language ID earlier and handle handle a language ID of 0x7F as the preferred default language.
parent
8908ea67d5
commit
dc58fb87ab
9
newgrf.c
9
newgrf.c
|
@ -1961,13 +1961,17 @@ static void FeatureNewName(byte *buf, int len)
|
|||
uint16 endid;
|
||||
const char* name;
|
||||
bool new_scheme = _cur_grffile->grf_version >= 7;
|
||||
bool generic;
|
||||
|
||||
check_length(len, 6, "FeatureNewName");
|
||||
buf++;
|
||||
feature = grf_load_byte(&buf);
|
||||
lang = grf_load_byte(&buf);
|
||||
num = grf_load_byte(&buf);
|
||||
id = (lang & 0x80) ? grf_load_word(&buf) : grf_load_byte(&buf);
|
||||
generic = HASBIT(lang, 7);
|
||||
id = generic ? grf_load_word(&buf) : grf_load_byte(&buf);
|
||||
|
||||
CLRBIT(lang, 7);
|
||||
|
||||
if (feature <= GSF_AIRCRAFT && id < _vehcounts[feature]) {
|
||||
id += _vehshifts[feature];
|
||||
|
@ -1978,7 +1982,8 @@ static void FeatureNewName(byte *buf, int len)
|
|||
id, endid, feature, lang);
|
||||
|
||||
name = (const char*)buf; /*transfer read value*/
|
||||
len -= (lang & 0x80) ? 6 : 5;
|
||||
len -= generic ? 6 : 5;
|
||||
|
||||
for (; id < endid && len > 0; id++) {
|
||||
size_t ofs = strlen(name) + 1;
|
||||
|
||||
|
|
|
@ -233,7 +233,7 @@ StringID AddGRFString(uint32 grfid, uint16 stringid, byte langid_to_add, bool ne
|
|||
|
||||
newtext = malloc(sizeof(*newtext) + strlen(text_to_add) + 1);
|
||||
newtext->next = NULL;
|
||||
newtext->langid = GB(langid_to_add, 0, 6);
|
||||
newtext->langid = langid_to_add;
|
||||
strcpy(newtext->text, text_to_add);
|
||||
|
||||
TranslateTTDPatchCodes(newtext->text);
|
||||
|
@ -252,7 +252,7 @@ StringID AddGRFString(uint32 grfid, uint16 stringid, byte langid_to_add, bool ne
|
|||
|
||||
/* Loop through all languages and see if we can replace a string */
|
||||
for (ptext = &_grf_text[id].textholder; (text = *ptext) != NULL; ptext = &text->next) {
|
||||
if (text->langid != GB(langid_to_add, 0, 6)) continue;
|
||||
if (text->langid != langid_to_add) continue;
|
||||
newtext->next = text->next;
|
||||
*ptext = newtext;
|
||||
free(text);
|
||||
|
@ -310,7 +310,7 @@ char *GetGRFString(char *buff, uint16 stringid, const char* last)
|
|||
|
||||
/* If the current string is English or American, set it as the
|
||||
* fallback language if the specific language isn't available. */
|
||||
if (search_text->langid == GRFLX_ENGLISH || search_text->langid == GRFLX_AMERICAN) {
|
||||
if (search_text->langid == GRFLX_UNSPECIFIED || (default_text == NULL && (search_text->langid == GRFLX_ENGLISH || search_text->langid == GRFLX_AMERICAN))) {
|
||||
default_text = search_text;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue