strings.c
changeset 2635 88b8b74c01ac
parent 2630 35249d2ded3e
child 2639 8a7342eb3a78
equal deleted inserted replaced
2634:16334e1a4862 2635:88b8b74c01ac
   159 char *GetStringWithArgs(char *buffr, uint string, const int32 *argv)
   159 char *GetStringWithArgs(char *buffr, uint string, const int32 *argv)
   160 {
   160 {
   161 	uint index = GB(string,  0, 11);
   161 	uint index = GB(string,  0, 11);
   162 	uint tab   = GB(string, 11,  5);
   162 	uint tab   = GB(string, 11,  5);
   163 
   163 
   164 	if (!(string & 0xFFFF)) {
   164 	if (GB(string, 0, 16) == 0) error("!invalid string id 0 in GetString");
   165 		error("!invalid string id 0 in GetString");
       
   166 	}
       
   167 
   165 
   168 	switch (tab) {
   166 	switch (tab) {
   169 		case 4:
   167 		case 4:
   170 			if (index >= 0xC0)
   168 			if (index >= 0xC0)
   171 				return GetSpecialTownNameString(buffr, index - 0xC0, GetInt32(&argv));
   169 				return GetSpecialTownNameString(buffr, index - 0xC0, GetInt32(&argv));
   194 		error(
   192 		error(
   195 			"!String 0x%X is invalid. "
   193 			"!String 0x%X is invalid. "
   196 			"Probably because an old version of the .lng file.\n", string
   194 			"Probably because an old version of the .lng file.\n", string
   197 		);
   195 		);
   198 
   196 
   199 	return FormatString(buffr, GetStringPtr(string&0xFFFF), argv, string >> 24);
   197 	return FormatString(buffr, GetStringPtr(GB(string, 0, 16)), argv, GB(string, 24, 8));
   200 }
   198 }
   201 
   199 
   202 char *GetString(char *buffr, StringID string)
   200 char *GetString(char *buffr, StringID string)
   203 {
   201 {
   204 	return GetStringWithArgs(buffr, string, (int32*)_decode_parameters);
   202 	return GetStringWithArgs(buffr, string, (int32*)_decode_parameters);