mirror of
https://github.com/blupi-games/planetblupi
synced 2024-12-30 10:15:36 +01:00
Save the selected language in the info file if different of user's locale
This commit is contained in:
parent
25240911c8
commit
a635640f4c
@ -51,6 +51,7 @@
|
|||||||
#define MAXDEMO 2000
|
#define MAXDEMO 2000
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
// v1.0
|
||||||
Sint16 majRev;
|
Sint16 majRev;
|
||||||
Sint16 minRev;
|
Sint16 minRev;
|
||||||
Sint16 reserve1[9];
|
Sint16 reserve1[9];
|
||||||
@ -65,7 +66,10 @@ typedef struct {
|
|||||||
Sint16 bAccessBuild;
|
Sint16 bAccessBuild;
|
||||||
Sint16 prive;
|
Sint16 prive;
|
||||||
Sint16 skill;
|
Sint16 skill;
|
||||||
Sint16 reserve2[93];
|
// v1.1
|
||||||
|
Sint16 language;
|
||||||
|
|
||||||
|
Sint16 reserve2[92];
|
||||||
} DescInfo;
|
} DescInfo;
|
||||||
|
|
||||||
// Toutes les premières lettres doivent
|
// Toutes les premières lettres doivent
|
||||||
@ -1584,11 +1588,13 @@ CEvent::CEvent ()
|
|||||||
m_Languages.push_back (Language::fr);
|
m_Languages.push_back (Language::fr);
|
||||||
m_Languages.push_back (Language::de);
|
m_Languages.push_back (Language::de);
|
||||||
|
|
||||||
if (GetLocale () == "en_US")
|
this->m_LangStart = GetLocale ();
|
||||||
|
|
||||||
|
if (this->m_LangStart == "en_US")
|
||||||
m_Lang = m_Languages.begin () + 1;
|
m_Lang = m_Languages.begin () + 1;
|
||||||
else if (GetLocale () == "fr")
|
else if (this->m_LangStart == "fr")
|
||||||
m_Lang = m_Languages.begin () + 2;
|
m_Lang = m_Languages.begin () + 2;
|
||||||
else if (GetLocale () == "de")
|
else if (this->m_LangStart == "de")
|
||||||
m_Lang = m_Languages.begin () + 3;
|
m_Lang = m_Languages.begin () + 3;
|
||||||
else
|
else
|
||||||
m_Lang = m_Languages.begin ();
|
m_Lang = m_Languages.begin ();
|
||||||
@ -3611,30 +3617,52 @@ CEvent::PlayUp (Point pos)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Language
|
||||||
|
CEvent::GetStartLanguage ()
|
||||||
|
{
|
||||||
|
if (this->m_LangStart == "en_US")
|
||||||
|
return Language::en_US;
|
||||||
|
if (this->m_LangStart == "fr")
|
||||||
|
return Language::fr;
|
||||||
|
if (this->m_LangStart == "de")
|
||||||
|
return Language::de;
|
||||||
|
return Language::en;
|
||||||
|
}
|
||||||
|
|
||||||
|
Language
|
||||||
|
CEvent::GetLanguage ()
|
||||||
|
{
|
||||||
|
return *this->m_Lang;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CEvent::SetLanguage ()
|
CEvent::SetLanguage (Language lang)
|
||||||
{
|
{
|
||||||
static char env[64];
|
static char env[64];
|
||||||
const char * lang;
|
const char * slang;
|
||||||
|
|
||||||
|
if (lang != Language::undef)
|
||||||
|
m_Lang = m_Languages.begin () + static_cast<int> (lang);
|
||||||
|
|
||||||
switch (*m_Lang)
|
switch (*m_Lang)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
|
case Language::undef:
|
||||||
case Language::en:
|
case Language::en:
|
||||||
lang = "C";
|
slang = "C";
|
||||||
break;
|
break;
|
||||||
case Language::en_US:
|
case Language::en_US:
|
||||||
lang = "en_US";
|
slang = "en_US";
|
||||||
break;
|
break;
|
||||||
case Language::fr:
|
case Language::fr:
|
||||||
lang = "fr";
|
slang = "fr";
|
||||||
break;
|
break;
|
||||||
case Language::de:
|
case Language::de:
|
||||||
lang = "de";
|
slang = "de";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf (env, sizeof (env), "LANGUAGE=%s", lang);
|
snprintf (env, sizeof (env), "LANGUAGE=%s", slang);
|
||||||
|
|
||||||
{
|
{
|
||||||
putenv (env);
|
putenv (env);
|
||||||
@ -4411,7 +4439,7 @@ CEvent::WriteInfo ()
|
|||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
info.majRev = 1;
|
info.majRev = 1;
|
||||||
info.minRev = 0;
|
info.minRev = 1;
|
||||||
info.prive = m_private;
|
info.prive = m_private;
|
||||||
info.exercice = m_exercice;
|
info.exercice = m_exercice;
|
||||||
info.mission = m_mission;
|
info.mission = m_mission;
|
||||||
@ -4426,6 +4454,11 @@ CEvent::WriteInfo ()
|
|||||||
info.audioVolume = m_pSound->GetAudioVolume ();
|
info.audioVolume = m_pSound->GetAudioVolume ();
|
||||||
info.midiVolume = m_pSound->GetMidiVolume ();
|
info.midiVolume = m_pSound->GetMidiVolume ();
|
||||||
|
|
||||||
|
/* Global settings */
|
||||||
|
info.language = static_cast<Sint16> (
|
||||||
|
this->GetLanguage () != this->GetStartLanguage () ? this->GetLanguage ()
|
||||||
|
: Language::undef);
|
||||||
|
|
||||||
nb = fwrite (&info, sizeof (info), 1, file);
|
nb = fwrite (&info, sizeof (info), 1, file);
|
||||||
if (nb < 1)
|
if (nb < 1)
|
||||||
goto error;
|
goto error;
|
||||||
@ -4474,6 +4507,9 @@ CEvent::ReadInfo ()
|
|||||||
m_pSound->SetAudioVolume (info.audioVolume);
|
m_pSound->SetAudioVolume (info.audioVolume);
|
||||||
m_pSound->SetMidiVolume (info.midiVolume);
|
m_pSound->SetMidiVolume (info.midiVolume);
|
||||||
|
|
||||||
|
if ((info.majRev == 1 && info.minRev >= 1) || info.majRev >= 2)
|
||||||
|
this->SetLanguage (static_cast<Language> (info.language));
|
||||||
|
|
||||||
fclose (file);
|
fclose (file);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
@ -76,6 +76,7 @@ struct DemoSDLEvent {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum class Language {
|
enum class Language {
|
||||||
|
undef = -1,
|
||||||
en = 0,
|
en = 0,
|
||||||
en_US = 1,
|
en_US = 1,
|
||||||
fr = 2,
|
fr = 2,
|
||||||
@ -155,8 +156,10 @@ protected:
|
|||||||
bool PlayMove (Point pos);
|
bool PlayMove (Point pos);
|
||||||
bool PlayUp (Point pos);
|
bool PlayUp (Point pos);
|
||||||
|
|
||||||
void SetLanguage ();
|
Language GetStartLanguage ();
|
||||||
void SetWindowSize (Uint8 prevScale, Uint8 newScale);
|
Language GetLanguage ();
|
||||||
|
void SetLanguage (Language lang = Language::undef);
|
||||||
|
void SetWindowSize (Uint8 prevScale, Uint8 newScale);
|
||||||
|
|
||||||
void ChangeButtons (Sint32 message);
|
void ChangeButtons (Sint32 message);
|
||||||
|
|
||||||
@ -181,6 +184,7 @@ protected:
|
|||||||
protected:
|
protected:
|
||||||
std::vector<Language> m_Languages;
|
std::vector<Language> m_Languages;
|
||||||
std::vector<Language>::iterator m_Lang;
|
std::vector<Language>::iterator m_Lang;
|
||||||
|
std::string m_LangStart;
|
||||||
Sint32 m_speed;
|
Sint32 m_speed;
|
||||||
Sint32 m_exercice;
|
Sint32 m_exercice;
|
||||||
Sint32 m_mission;
|
Sint32 m_mission;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user