mirror of
https://github.com/AxioDL/PrimeWorldEditor.git
synced 2025-12-14 15:46:17 +00:00
String cooking support
This commit is contained in:
@@ -23,8 +23,8 @@ const ELanguage gkSupportedLanguagesMP1PAL[] =
|
||||
// Supported languages in Metroid Prime 3
|
||||
const ELanguage gkSupportedLanguagesMP3[] =
|
||||
{
|
||||
ELanguage::English, ELanguage::German, ELanguage::French,
|
||||
ELanguage::Spanish, ELanguage::Italian, ELanguage::Japanese
|
||||
ELanguage::English, ELanguage::Japanese, ELanguage::German,
|
||||
ELanguage::French, ELanguage::Spanish, ELanguage::Italian
|
||||
};
|
||||
|
||||
// Supported languages in DKCR
|
||||
@@ -57,7 +57,7 @@ TString CStringTable::GetString(ELanguage Language, uint StringIndex) const
|
||||
|
||||
if (LanguageIdx >= 0 && mLanguages[LanguageIdx].Strings.size() > StringIndex)
|
||||
{
|
||||
return mLanguages[LanguageIdx].Strings[StringIndex];
|
||||
return mLanguages[LanguageIdx].Strings[StringIndex].String;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -72,7 +72,9 @@ void CStringTable::SetString(ELanguage Language, uint StringIndex, const TString
|
||||
|
||||
if (LanguageIdx >= 0 && mLanguages[LanguageIdx].Strings.size() > StringIndex)
|
||||
{
|
||||
mLanguages[LanguageIdx].Strings[StringIndex] = kNewString;
|
||||
mLanguages[LanguageIdx].Strings[StringIndex].String = kNewString;
|
||||
mLanguages[LanguageIdx].Strings[StringIndex].IsLocalized =
|
||||
(LanguageIdx == 0 || kNewString != mLanguages[0].Strings[StringIndex].String);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,7 +110,7 @@ void CStringTable::MoveString(uint StringIndex, uint NewIndex)
|
||||
for (uint LanguageIdx = 0; LanguageIdx < mLanguages.size(); LanguageIdx++)
|
||||
{
|
||||
SLanguageData& Language = mLanguages[LanguageIdx];
|
||||
TString String = Language.Strings[StringIndex];
|
||||
SStringData String = Language.Strings[StringIndex];
|
||||
|
||||
if (NewIndex > StringIndex)
|
||||
{
|
||||
@@ -171,7 +173,7 @@ void CStringTable::AddString(uint AtIndex)
|
||||
for (uint LanguageIdx = 0; LanguageIdx < mLanguages.size(); LanguageIdx++)
|
||||
{
|
||||
SLanguageData& Language = mLanguages[LanguageIdx];
|
||||
Language.Strings.insert( Language.Strings.begin() + AtIndex, 1, "" );
|
||||
Language.Strings.insert( Language.Strings.begin() + AtIndex, 1, SStringData() );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -216,7 +218,7 @@ CDependencyTree* CStringTable::BuildDependencyTree() const
|
||||
|
||||
for (uint StringIdx = 0; StringIdx < kLanguage.Strings.size(); StringIdx++)
|
||||
{
|
||||
const TString& kString = kLanguage.Strings[StringIdx];
|
||||
const TString& kString = kLanguage.Strings[StringIdx].String;
|
||||
|
||||
for (int TagIdx = kString.IndexOf('&'); TagIdx != -1; TagIdx = kString.IndexOf('&', TagIdx + 1))
|
||||
{
|
||||
|
||||
@@ -15,15 +15,32 @@ class CStringTable : public CResource
|
||||
{
|
||||
DECLARE_RESOURCE_TYPE(StringTable)
|
||||
friend class CStringLoader;
|
||||
friend class CStringCooker;
|
||||
|
||||
/** List of string names. Optional data, can be empty. */
|
||||
std::vector<TString> mStringNames;
|
||||
|
||||
/** String data for a language */
|
||||
struct SStringData
|
||||
{
|
||||
TString String;
|
||||
bool IsLocalized;
|
||||
|
||||
SStringData()
|
||||
: IsLocalized(false)
|
||||
{}
|
||||
|
||||
void Serialize(IArchive& Arc)
|
||||
{
|
||||
Arc << SerialParameter("String", String)
|
||||
<< SerialParameter("IsLocalized", IsLocalized, SH_Optional, true);
|
||||
}
|
||||
};
|
||||
|
||||
struct SLanguageData
|
||||
{
|
||||
ELanguage Language;
|
||||
std::vector<TString> Strings;
|
||||
std::vector<SStringData> Strings;
|
||||
|
||||
void Serialize(IArchive& Arc)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user