Changeset - r6793:8878760b0aca
[Not reviewed]
master
0 4 0
glx - 17 years ago 2007-06-04 16:07:22
glx@openttd.org
(svn r10032) -Add: sort the strings in server language dropdown
4 files changed with 69 insertions and 41 deletions:
0 comments (0 inline, 0 general)
src/network/network.h
Show inline comments
 
@@ -76,12 +76,38 @@ enum NetworkJoinStatus {
 
	NETWORK_JOIN_STATUS_GETTING_COMPANY_INFO,
 
};
 

	
 
// language ids for server_lang and client_lang
 
/* Language ids for server_lang and client_lang. Do NOT modify the order. */
 
enum NetworkLanguage {
 
	NETLANG_ANY     = 0,
 
	NETLANG_ENGLISH = 1,
 
	NETLANG_GERMAN  = 2,
 
	NETLANG_FRENCH  = 3,
 
	NETLANG_ANY = 0,
 
	NETLANG_ENGLISH,
 
	NETLANG_GERMAN,
 
	NETLANG_FRENCH,
 
	NETLANG_BRAZILIAN,
 
	NETLANG_BULGARIAN,
 
	NETLANG_CHINESE,
 
	NETLANG_CZECH,
 
	NETLANG_DANISH,
 
	NETLANG_DUTCH,
 
	NETLANG_ESPERANTO,
 
	NETLANG_FINNISH,
 
	NETLANG_HUNGARIAN,
 
	NETLANG_ICELANDIC,
 
	NETLANG_ITALIAN,
 
	NETLANG_JAPANESE,
 
	NETLANG_KOREAN,
 
	NETLANG_LITHUANIAN,
 
	NETLANG_NORWEGIAN,
 
	NETLANG_POLISH,
 
	NETLANG_PORTUGUESE,
 
	NETLANG_ROMANIAN,
 
	NETLANG_RUSSIAN,
 
	NETLANG_SLOVAK,
 
	NETLANG_SLOVENIAN,
 
	NETLANG_SPANISH,
 
	NETLANG_SWEDISH,
 
	NETLANG_TURKISH,
 
	NETLANG_UKRAINIAN,
 
	NETLANG_LAST
 
};
 

	
 
VARDEF NetworkGameInfo _network_game_info;
src/network/network_gui.cpp
Show inline comments
 
@@ -84,20 +84,20 @@ static const StringID _players_dropdown[
 
	STR_NETWORK_10_PLAYERS,
 
	INVALID_STRING_ID
 
};
 
/* The strings are in alphabetical order (in English). */
 
static const StringID _language_dropdown[] = {
 

	
 
static StringID _language_dropdown[] = {
 
	STR_NETWORK_LANG_ANY,
 
	STR_NETWORK_LANG_ENGLISH,
 
	STR_NETWORK_LANG_GERMAN,
 
	STR_NETWORK_LANG_FRENCH,
 
	STR_NETWORK_LANG_BRAZILIAN,
 
	STR_NETWORK_LANG_BULGARIAN,
 
	STR_NETWORK_LANG_CHINESE,
 
	STR_NETWORK_LANG_CZECH,
 
	STR_NETWORK_LANG_DANISH,
 
	STR_NETWORK_LANG_DUTCH,
 
	STR_NETWORK_LANG_ENGLISH,
 
	STR_NETWORK_LANG_ESPERANTO,
 
	STR_NETWORK_LANG_FINNISH,
 
	STR_NETWORK_LANG_FRENCH,
 
	STR_NETWORK_LANG_GERMAN,
 
	STR_NETWORK_LANG_HUNGARIAN,
 
	STR_NETWORK_LANG_ICELANDIC,
 
	STR_NETWORK_LANG_ITALIAN,
 
@@ -119,37 +119,22 @@ static const StringID _language_dropdown
 
};
 

	
 
/* Used to map the _server_lang value to the sorted string. */
 
static const int _server_lang_to_string[] = {
 
	 0, // Any
 
	 7, // English
 
	11, // German
 
	10, // French
 
	 1, // Brazilian
 
	 2, // Bulgarian
 
	 3, // Chinese
 
	 4, // Czech
 
	 5, // Danish
 
	 6, // Dutch
 
	 8, // Esperanto
 
	 9, // Finnish
 
	12, // Hungarian
 
	13, // Icelandic
 
	14, // Italian
 
	15, // Japanese
 
	16, // Korean
 
	17, // Lithuanian
 
	18, // Norwegian
 
	19, // Polish
 
	20, // Portuguese
 
	21, // Romanian
 
	22, // Russian
 
	23, // Slovak
 
	24, // Slovenian
 
	25, // Spanish
 
	26, // Swedish
 
	27, // Turkish
 
	28, // Ukrainian
 
};
 
static int _server_lang_to_string[NETLANG_LAST] = {0};
 

	
 
void SortNetworkLanguages() {
 
	/* Sort the strings (we don't move 'any' and the 'invalid' one) */
 
	qsort(&_language_dropdown[1], NETLANG_LAST - 1, sizeof(StringID), &StringIDSorter);
 

	
 
	/* Update the lookup table */
 
	for (int i = NETLANG_ANY; i < NETLANG_LAST; i++) {
 
		for (int j = NETLANG_ANY; j < NETLANG_LAST; j++) {
 
			if (_language_dropdown[j] - STR_NETWORK_LANG_ANY == i) {
 
				_server_lang_to_string[i] = j;
 
				break;
 
			}
 
		}
 
	}
 
}
 

	
 
enum {
 
	NET_PRC__OFFSET_TOP_WIDGET          = 54,
src/strings.cpp
Show inline comments
 
@@ -1101,6 +1101,8 @@ StringID RemapOldStringID(StringID s)
 
	}
 
}
 

	
 
extern void SortNetworkLanguages();
 

	
 
bool ReadLanguagePack(int lang_index)
 
{
 
	int tot_count, i;
 
@@ -1156,6 +1158,7 @@ bool ReadLanguagePack(int lang_index)
 

	
 
	_dynlang.curr = lang_index;
 
	SetCurrentGrfLangID(_langpack->isocode);
 
	SortNetworkLanguages();
 
	return true;
 
}
 

	
 
@@ -1191,6 +1194,18 @@ static int CDECL LanguageCompareFunc(con
 
	return strcmp(cmp1->file, cmp2->file);
 
}
 

	
 
int CDECL StringIDSorter(const void *a, const void *b)
 
{
 
	const StringID va = *(const StringID*)a;
 
	const StringID vb = *(const StringID*)b;
 
	char stra[512];
 
	char strb[512];
 
	GetString(stra, va, lastof(stra));
 
	GetString(strb, vb, lastof(strb));
 

	
 
	return strcmp(stra, strb);
 
}
 

	
 
/**
 
 * Checks whether the given language is already found.
 
 * @param langs    languages we've found so fa
src/strings.h
Show inline comments
 
@@ -16,4 +16,6 @@ int32 GetParamInt32();
 
bool ReadLanguagePack(int index);
 
void InitializeLanguagePacks();
 

	
 
int CDECL StringIDSorter(const void *a, const void *b);
 

	
 
#endif /* STRINGS_H */
0 comments (0 inline, 0 general)