forked from Mirrors/openclonk
Move C4ComponentHost::LoadEx to C4Language
To make C4ComponentHost more reusable, move C4Language dependencies out of the class. LoadEx isn't really suited to reside in C4Language, but it's better to have it there, since all C4Language consumers also use C4ComponentHost; the reverse isn't true.stable-5.4
parent
924e0538fc
commit
4ebf67754c
|
@ -105,12 +105,6 @@ bool C4ComponentHost::Load(C4GroupSet &hGroupSet,
|
|||
return false;
|
||||
}
|
||||
|
||||
bool C4ComponentHost::LoadEx(C4Group &hGroup, const char *szFilename, const char *szLanguage)
|
||||
{
|
||||
C4GroupSet hGroups = Languages.GetPackGroups(hGroup);
|
||||
return Load(hGroups, szFilename, szLanguage);
|
||||
}
|
||||
|
||||
void C4ComponentHost::FinishLoad(const StdStrBuf & name, C4Group &hGroup)
|
||||
{
|
||||
Data.EnsureUnicode();
|
||||
|
|
|
@ -36,7 +36,6 @@ public:
|
|||
size_t GetDataSize() const { return Data.getLength(); }
|
||||
bool Load(C4Group &hGroup, const char *szFilename, const char *szLanguage=NULL);
|
||||
bool Load(C4GroupSet &hGroupSet, const char *szFilename, const char *szLanguage=NULL);
|
||||
bool LoadEx(C4Group &hGroup, const char *szFilename, const char *szLanguage=NULL);
|
||||
bool GetLanguageString(const char *szLanguage, class StdStrBuf &rTarget);
|
||||
protected:
|
||||
// The component host's Data has changed. This callback can be used by
|
||||
|
|
|
@ -373,6 +373,14 @@ C4GroupSet C4Language::GetPackGroups(C4Group & hGroup)
|
|||
return r;
|
||||
}
|
||||
|
||||
bool C4Language::LoadComponentHost(C4ComponentHost *host, C4Group &hGroup, const char *szFilename, const char *szLanguage)
|
||||
{
|
||||
assert(host);
|
||||
if (!host) return false;
|
||||
C4GroupSet hGroups = ::Languages.GetPackGroups(hGroup);
|
||||
return host->Load(hGroups, szFilename, szLanguage);
|
||||
}
|
||||
|
||||
void C4Language::InitInfos()
|
||||
{
|
||||
C4Group hGroup;
|
||||
|
|
|
@ -66,6 +66,9 @@ public:
|
|||
// Handling of external language packs
|
||||
int GetPackCount();
|
||||
C4GroupSet GetPackGroups(C4Group &);
|
||||
// Load a C4ComponentHost from all loaded language packs
|
||||
static bool LoadComponentHost(C4ComponentHost *host, C4Group &hGroup, const char *szFilename, const char *szLanguage);
|
||||
|
||||
// Handling of language info loaded from string tables
|
||||
int GetInfoCount();
|
||||
C4LanguageInfo *GetInfo(int iIndex);
|
||||
|
|
|
@ -252,12 +252,12 @@ bool C4Game::OpenScenario()
|
|||
#endif
|
||||
|
||||
// Title
|
||||
Title.LoadEx(ScenarioFile, C4CFN_Title, Config.General.LanguageEx);
|
||||
C4Language::LoadComponentHost(&Title, ScenarioFile, C4CFN_Title, Config.General.LanguageEx);
|
||||
if (!Title.GetLanguageString(Config.General.LanguageEx, ScenarioTitle))
|
||||
ScenarioTitle.Copy(C4S.Head.Title);
|
||||
|
||||
// String tables
|
||||
ScenarioLangStringTable.LoadEx(ScenarioFile, C4CFN_ScriptStringTbl, Config.General.LanguageEx);
|
||||
C4Language::LoadComponentHost(&ScenarioLangStringTable, ScenarioFile, C4CFN_ScriptStringTbl, Config.General.LanguageEx);
|
||||
|
||||
// Load parameters (not as network client, because then team info has already been sent by host)
|
||||
if (!Network.isEnabled() || Network.isHost())
|
||||
|
@ -2655,7 +2655,7 @@ bool C4Game::LoadAdditionalSystemGroup(C4Group &parent_group)
|
|||
if (SysGroup.OpenAsChild(&parent_group, C4CFN_System))
|
||||
{
|
||||
C4LangStringTable SysGroupString;
|
||||
SysGroupString.LoadEx(SysGroup, C4CFN_ScriptStringTbl, Config.General.LanguageEx);
|
||||
C4Language::LoadComponentHost(&SysGroupString, SysGroup, C4CFN_ScriptStringTbl, Config.General.LanguageEx);
|
||||
// load custom scenario control definitions
|
||||
if (SysGroup.FindEntry(C4CFN_PlayerControls))
|
||||
{
|
||||
|
@ -2797,7 +2797,7 @@ bool C4Game::InitKeyboard()
|
|||
void C4Game::UpdateLanguage()
|
||||
{
|
||||
// Reload System.ocg string table
|
||||
MainSysLangStringTable.LoadEx(Application.SystemGroup, C4CFN_ScriptStringTbl, Config.General.LanguageEx);
|
||||
C4Language::LoadComponentHost(&MainSysLangStringTable, Application.SystemGroup, C4CFN_ScriptStringTbl, Config.General.LanguageEx);
|
||||
}
|
||||
|
||||
bool C4Game::InitPlayerControlSettings()
|
||||
|
|
|
@ -94,7 +94,7 @@ namespace C4GameLobby
|
|||
StdStrBuf sDesc;
|
||||
// load desc
|
||||
C4ComponentHost DefDesc;
|
||||
if (DefDesc.LoadEx(ScenarioFile, C4CFN_ScenarioDesc, Config.General.LanguageEx))
|
||||
if (C4Language::LoadComponentHost(&DefDesc, ScenarioFile, C4CFN_ScenarioDesc, Config.General.LanguageEx))
|
||||
{
|
||||
C4RTFFile rtf;
|
||||
rtf.Load(StdBuf(DefDesc.GetData(), SLen(DefDesc.GetData())));
|
||||
|
|
|
@ -128,7 +128,7 @@ bool C4MapFolderData::Load(C4Group &hGroup, C4ScenarioListLoader::Folder *pScenL
|
|||
Clear();
|
||||
// load localization info
|
||||
C4LangStringTable LangTable;
|
||||
bool fHasLangTable = !!LangTable.LoadEx(hGroup, C4CFN_ScriptStringTbl, Config.General.LanguageEx);
|
||||
bool fHasLangTable = C4Language::LoadComponentHost(&LangTable, hGroup, C4CFN_ScriptStringTbl, Config.General.LanguageEx);
|
||||
// load core data
|
||||
StdStrBuf Buf;
|
||||
if (!hGroup.LoadEntryString(C4CFN_MapFolderData, &Buf)) return false;
|
||||
|
@ -483,7 +483,7 @@ bool C4ScenarioListLoader::Entry::Load(C4Group *pFromGrp, const StdStrBuf *psFil
|
|||
return false;
|
||||
// Load entry name
|
||||
C4ComponentHost DefNames;
|
||||
if (DefNames.LoadEx(Group, C4CFN_Title, Config.General.LanguageEx))
|
||||
if (C4Language::LoadComponentHost(&DefNames, Group, C4CFN_Title, Config.General.LanguageEx))
|
||||
if (DefNames.GetLanguageString(Config.General.LanguageEx, sName))
|
||||
fNameLoaded = true;
|
||||
// load entry icon
|
||||
|
@ -524,7 +524,7 @@ bool C4ScenarioListLoader::Entry::Load(C4Group *pFromGrp, const StdStrBuf *psFil
|
|||
{
|
||||
// load desc
|
||||
C4ComponentHost DefDesc;
|
||||
if (DefDesc.LoadEx(Group, C4CFN_ScenarioDesc, Config.General.LanguageEx))
|
||||
if (C4Language::LoadComponentHost(&DefDesc, Group, C4CFN_ScenarioDesc, Config.General.LanguageEx))
|
||||
{
|
||||
C4RTFFile rtf;
|
||||
rtf.Load(StdBuf(DefDesc.GetData(), SLen(DefDesc.GetData())));
|
||||
|
|
|
@ -360,7 +360,7 @@ bool C4Def::Load(C4Group &hGroup,
|
|||
}
|
||||
|
||||
// Read string table
|
||||
StringTable.LoadEx(hGroup, C4CFN_ScriptStringTbl, szLanguage);
|
||||
C4Language::LoadComponentHost(&StringTable, hGroup, C4CFN_ScriptStringTbl, szLanguage);
|
||||
|
||||
// Register ID with script engine
|
||||
::ScriptEngine.RegisterGlobalConstant(id.ToString(), C4VPropList(this));
|
||||
|
@ -384,7 +384,7 @@ bool C4Def::Load(C4Group &hGroup,
|
|||
{
|
||||
// create new
|
||||
pClonkNames = new C4ComponentHost();
|
||||
if (!pClonkNames->LoadEx(hGroup, C4CFN_ClonkNames, szLanguage))
|
||||
if (!C4Language::LoadComponentHost(pClonkNames, hGroup, C4CFN_ClonkNames, szLanguage))
|
||||
{
|
||||
delete pClonkNames; pClonkNames = NULL;
|
||||
}
|
||||
|
|
|
@ -107,7 +107,7 @@ bool C4RankSystem::Load(C4Group &hGroup, const char *szFilenames, int DefRankBas
|
|||
assert(szFilenames); assert(szLanguage);
|
||||
// load new
|
||||
C4ComponentHost Ranks;
|
||||
if (!Ranks.LoadEx(hGroup, szFilenames, szLanguage)) return false;
|
||||
if (!C4Language::LoadComponentHost(&Ranks, hGroup, szFilenames, szLanguage)) return false;
|
||||
size_t iSize = Ranks.GetDataSize();
|
||||
if (!iSize) return false;
|
||||
szRankNames=new char[iSize+1];
|
||||
|
|
Loading…
Reference in New Issue