www.pudn.com > coolMEMORY.rar > AS_Language.cpp
//-----------------------------------------------------------------------------
// File: AS_Language.cpp
//-----------------------------------------------------------------------------
#include "AS_ENGINE.h"
// Variables: *****************************************************************
char *pbyASText[AS_TEXTS];
char *pbyASMessage[AS_MESSAGES];
int iASCreditsTexts;
char **pbyASCreditsText;
int iASLanguages; // The number of languages
char **pbyASLanguage; // All found languages names
// Here are all pointers to the texts:
char *T_HelpFile, *T_CreditsFile,
*T_Ok, *T_Cancel, *T_Fullscreen, *T_DisplayMode, *T_Language, *T_Help,
*T_Music, *T_Sound, *T_ShowFPS, *T_Log, *T_Lighting, *T_None, *T_Flat,
*T_Smooth, *T_FastTexturing, *T_UseMipmaps, *T_Credits, *T_Configuration,
*T_Homepage, *T_Version_, *T_ProgrammingAndDesign_, *T_Music_, *T_Homepage_,
*T_EMail_, *T_ProgramInfo_, *T_Build_, *T_General, *T_Graphic, *T_Programming,
*T_HightRenderQuality, *T_MouseSensibility, *T_Quit, *T_Error, *T_ShutdownError,
*T_Pause, *T_MoreCredits, *T_Options, *T_Yes, *T_No, *T_Multitexturing,
*T_Particles, *T_ParticleDensity, *T_Low, *T_Middle, *T_All, *T_ZBuffer,
*T_MusicVolume, *T_Slow, *T_Normal, *T_Fast, *T_Control, *T_WireframeMode,
*T_PointMode, *T_LightMaps, *T_GraphicAndDesign_, *T_Player, *T_Human, *T_ComputerEasy,
*T_ComputerNormal, *T_ComputerClever, *T_ShowCardsAtBeginning, *T_TimeLimit,
*T_Seconds, *T_Rounds, *T_ErrorLimit, *T_CardPairs, *T_CardStyle, *T_StartGame,
*T_SetStandart, *T_GameMenu, *T_ThinkTimeLimit, *T_Intro, *T_Round,
*T_GameFinished, *T_GameDuration, *T_Result, *T_FoundCardPairs, *T_CheatsActivated,
*T_AdvancedGameMenu, *T_AdvancedOptions, *T_ShowLog;
// Pointer to messages:
char *M_FirstProgramStart, *M_ProgramWasNotSutDownCorrectlyAtLastTime,
*M_ProgramEndErrorDetected, *M_TheProgramIsAlreadyRunning,
*M_CouldNotInitializeOpenGLGraphic, *M_PressAnyKeyToContinue, *M_AreYouSure;
///////////////////////////////////////////////////////////////////////////////
// Functions: *****************************************************************
void EnumerateLanguages(void);
void SetLanguage(char *);
void DestroyLanguage(void);
///////////////////////////////////////////////////////////////////////////////
void EnumerateLanguages(void)
{ // begin EnumerateLanguages()
WIN32_FIND_DATA FindFileData;
char byTemp[256];
HANDLE Find;
_AS->WriteLogMessage("Enumerate languages");
if(pbyASLanguage)
{
for(int i = 0; i < iASLanguages; i++)
free(pbyASLanguage[i]);
free(pbyASLanguage);
}
iASLanguages = 0;
sprintf(byTemp, "%s%s\\*.*", _AS->byProgramPath, _AS->byLanguagesDirectory);
Find = FindFirstFile(byTemp, &FindFileData);
for(;;)
{
if(FindFileData.cFileName[0] != '.' && FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{ // We found a dictory:
iASLanguages++;
pbyASLanguage = (char **) realloc(pbyASLanguage, sizeof(char **)*iASLanguages);
pbyASLanguage[iASLanguages-1] = new char[strlen(FindFileData.cFileName)+1];
strcpy(pbyASLanguage[iASLanguages-1], FindFileData.cFileName);
_strupr(pbyASLanguage[iASLanguages-1]);
}
if(!FindNextFile(Find, &FindFileData))
break;
}
FindClose(Find);
} // end EnumerateLanguages()
void SetLanguage(char *pbyLanguage)
{ // begin SetLanguage()
char byFile[256], byTemp[256];
int i;
sprintf(byTemp, "Set language to %s", pbyLanguage);
_AS->WriteLogMessage(byTemp);
DestroyLanguage();
sprintf(byFile, "%s%s\\%s\\general.txt", _AS->byProgramPath, _AS->byLanguagesDirectory, pbyLanguage);
GetPrivateProfileString("help", "file", "", byTemp, MAX_PATH, byFile);
pbyASText[0] = (char *) malloc(strlen(byTemp)+1);
strcpy(pbyASText[0], byTemp);
GetPrivateProfileString("help", "credits_file", "", byTemp, MAX_PATH, byFile);
pbyASText[1] = (char *) malloc(strlen(byTemp)+1);
strcpy(pbyASText[1], byTemp);
// Load all texts:
for(i = 2; i < AS_TEXTS; i++)
{
sprintf(byTemp, "%d", i-2);
GetPrivateProfileString("general", byTemp, "", byTemp, MAX_PATH, byFile);
pbyASText[i] = (char *) malloc(strlen(byTemp)+1);
strcpy(pbyASText[i], byTemp);
}
// Load all messages:
for(i = 0; i < AS_MESSAGES; i++)
{
sprintf(byTemp, "%d", i);
GetPrivateProfileString("messages", byTemp, "", byTemp, MAX_PATH, byFile);
pbyASMessage[i] = (char *) malloc(strlen(byTemp)+1);
strcpy(pbyASMessage[i], byTemp);
}
#include "AS_LanguageText.h"
// Load credits texts:
sprintf(byFile, "%s%s\\%s\\credits.txt", _AS->byProgramPath, _AS->byLanguagesDirectory, pbyLanguage);
iASCreditsTexts = GetPrivateProfileInt("general", "texts", 0, byFile);
pbyASCreditsText = (char **) malloc(sizeof(char *)*iASCreditsTexts);
for(i = 0; i < iASCreditsTexts; i++)
{
sprintf(byTemp, "%d", i);
GetPrivateProfileString("texts", byTemp, "", byTemp, MAX_PATH, byFile);
pbyASCreditsText[i] = (char *) malloc(strlen(byTemp)+1);
strcpy(pbyASCreditsText[i], byTemp);
}
// Update the dialogs and so on:
SetConfigLanguage();
SetGameLanguage();
} // end SetLanguage()
void DestroyLanguage(void)
{ // begin DestroyLanguage()
for(int i = 0; i < AS_TEXTS; i++)
SAFE_DELETE(pbyASText[i]);
for(i = 0; i < AS_MESSAGES; i++)
SAFE_DELETE(pbyASMessage[i]);
for(i = 0; i < iASCreditsTexts; i++)
SAFE_DELETE(pbyASCreditsText[i]);
SAFE_DELETE(pbyASCreditsText);
} // end DestroyLanguage()