added country flags to language selectors

This commit is contained in:
oy 2011-07-12 20:33:53 +02:00
parent 38202d9736
commit 5f4a5b3366
2 changed files with 60 additions and 7 deletions

View file

@ -3,63 +3,84 @@
bosnian
== Bosanski
== 70
brazilian_portuguese
== Português brasileiro
== 76
bulgarian
== Български
== 100
czech
== Česky
== 203
danish
== Dansk
== 208
dutch
== Nederlands
== 528
finnish
== Suomi
== 246
french
== Français
== 250
german
== Deutsch
== 276
italian
== Italiano
== 380
norwegian
== Norsk
== 578
polish
== Polski
== 616
portuguese
== Português
== 620
romanian
== Română
== 642
russian
== Русский
== 643
serbian
== Srpski
== 688
slovak
== Slovensky
== 703
spanish
== Español
== 724
swedish
== Svenska
== 752
turkish
== Türkçe
== 792
ukrainian
== Українська
== 804

View file

@ -812,10 +812,11 @@ class CLanguage
{
public:
CLanguage() {}
CLanguage(const char *n, const char *f) : m_Name(n), m_FileName(f) {}
CLanguage(const char *n, const char *f, int Code) : m_Name(n), m_FileName(f), m_CountryCode(Code) {}
string m_Name;
string m_FileName;
int m_CountryCode;
bool operator<(const CLanguage &Other) { return m_Name < Other.m_Name; }
};
@ -830,6 +831,7 @@ void LoadLanguageIndexfile(IStorage *pStorage, IConsole *pConsole, sorted_array<
}
char aOrigin[128];
char aReplacement[128];
CLineReader LineReader;
LineReader.Init(File);
char *pLine;
@ -839,14 +841,32 @@ void LoadLanguageIndexfile(IStorage *pStorage, IConsole *pConsole, sorted_array<
continue;
str_copy(aOrigin, pLine, sizeof(aOrigin));
char *pReplacement = LineReader.Get();
if(!pReplacement)
pLine = LineReader.Get();
if(!pLine)
{
pConsole->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "localization", "unexpected end of index file");
break;
}
if(pReplacement[0] != '=' || pReplacement[1] != '=' || pReplacement[2] != ' ')
if(pLine[0] != '=' || pLine[1] != '=' || pLine[2] != ' ')
{
char aBuf[128];
str_format(aBuf, sizeof(aBuf), "malform replacement for index '%s'", aOrigin);
pConsole->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "localization", aBuf);
(void)LineReader.Get();
continue;
}
str_copy(aReplacement, pLine+3, sizeof(aReplacement));
pLine = LineReader.Get();
if(!pLine)
{
pConsole->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "localization", "unexpected end of index file");
break;
}
if(pLine[0] != '=' || pLine[1] != '=' || pLine[2] != ' ')
{
char aBuf[128];
str_format(aBuf, sizeof(aBuf), "malform replacement for index '%s'", aOrigin);
@ -856,7 +876,7 @@ void LoadLanguageIndexfile(IStorage *pStorage, IConsole *pConsole, sorted_array<
char aFileName[128];
str_format(aFileName, sizeof(aFileName), "languages/%s.txt", aOrigin);
pLanguages->add(CLanguage(pReplacement+3, aFileName));
pLanguages->add(CLanguage(aReplacement, aFileName, str_toint(pLine+3)));
}
io_close(File);
}
@ -870,7 +890,7 @@ void CMenus::RenderLanguageSelection(CUIRect MainView)
if(s_Languages.size() == 0)
{
s_Languages.add(CLanguage("English", ""));
s_Languages.add(CLanguage("English", "", 826));
LoadLanguageIndexfile(Storage(), Console(), &s_Languages);
for(int i = 0; i < s_Languages.size(); i++)
if(str_comp(s_Languages[i].m_FileName, g_Config.m_ClLanguagefile) == 0)
@ -889,7 +909,19 @@ void CMenus::RenderLanguageSelection(CUIRect MainView)
CListboxItem Item = UiDoListboxNextItem(&r.front());
if(Item.m_Visible)
UI()->DoLabelScaled(&Item.m_Rect, r.front().m_Name, 16.0f, -1);
{
CUIRect Rect;
Item.m_Rect.VSplitLeft(Item.m_Rect.h*2.0f, &Rect, &Item.m_Rect);
Rect.VMargin(6.0f, &Rect);
Rect.HMargin(3.0f, &Rect);
Graphics()->TextureSet(m_pClient->m_pCountryFlags->GetByCountryCode(r.front().m_CountryCode)->m_Texture);
Graphics()->QuadsBegin();
IGraphics::CQuadItem QuadItem(Rect.x, Rect.y, Rect.w, Rect.h);
Graphics()->QuadsDrawTL(&QuadItem, 1);
Graphics()->QuadsEnd();
Item.m_Rect.HSplitTop(2.0f, 0, &Item.m_Rect);
UI()->DoLabelScaled(&Item.m_Rect, r.front().m_Name, 16.0f, -1);
}
}
s_SelectedLanguage = UiDoListboxEnd(&s_ScrollValue, 0);