ZoneLoading: Save which language a zone has when loading

This commit is contained in:
Jan 2019-11-19 00:43:46 +01:00
parent 81255695a7
commit 2f108d533c
3 changed files with 98 additions and 0 deletions

View File

@ -6,6 +6,7 @@ Zone::Zone(std::string name, const zone_priority_t priority, IZoneAssetPools* po
m_priority = priority; m_priority = priority;
m_pools = pools; m_pools = pools;
m_game = game; m_game = game;
m_language = ZoneLanguage::LANGUAGE_NONE;
} }
IZoneAssetPools* Zone::GetPools() const IZoneAssetPools* Zone::GetPools() const

View File

@ -6,6 +6,31 @@
class IGame; class IGame;
enum class ZoneLanguage
{
LANGUAGE_NONE,
LANGUAGE_ENGLISH,
LANGUAGE_FRENCH,
LANGUAGE_GERMAN,
LANGUAGE_ITALIAN,
LANGUAGE_SPANISH,
LANGUAGE_BRITISH,
LANGUAGE_RUSSIAN,
LANGUAGE_POLISH,
LANGUAGE_KOREAN,
LANGUAGE_TAIWANESE,
LANGUAGE_JAPANESE,
LANGUAGE_CHINESE,
LANGUAGE_THAI,
LANGUAGE_LEET,
LANGUAGE_CZECH,
LANGUAGE_FRENCH_CAN,
LANGUAGE_AUSTRIAN,
LANGUAGE_PORTUGUESE,
LANGUAGE_MEXICAN_SPANISH,
LANGUAGE_FULL_JAPANESE
};
class Zone class Zone
{ {
IZoneAssetPools* m_pools; IZoneAssetPools* m_pools;
@ -13,6 +38,7 @@ class Zone
public: public:
std::string m_name; std::string m_name;
zone_priority_t m_priority; zone_priority_t m_priority;
ZoneLanguage m_language;
IGame* m_game; IGame* m_game;
Zone(std::string name, zone_priority_t priority, IZoneAssetPools* pools, IGame* game); Zone(std::string name, zone_priority_t priority, IZoneAssetPools* pools, IGame* game);

View File

@ -84,6 +84,76 @@ const uint8_t ZoneLoaderFactoryT6::RSA_PUBLIC_KEY_TREYARCH[]
class ZoneLoaderFactoryT6::ZoneLoaderFactoryT6Impl class ZoneLoaderFactoryT6::ZoneLoaderFactoryT6Impl
{ {
static ZoneLanguage GetZoneLanguage(std::string& zoneName)
{
if(zoneName.compare(0, 3, "en_") == 0)
{
return ZoneLanguage::LANGUAGE_ENGLISH;
}
if(zoneName.compare(0, 3, "fr_") == 0)
{
return ZoneLanguage::LANGUAGE_FRENCH;
}
if(zoneName.compare(0, 3, "fc_") == 0)
{
return ZoneLanguage::LANGUAGE_FRENCH_CAN;
}
if(zoneName.compare(0, 3, "ge_") == 0)
{
return ZoneLanguage::LANGUAGE_GERMAN;
}
if(zoneName.compare(0, 3, "as_") == 0)
{
return ZoneLanguage::LANGUAGE_AUSTRIAN;
}
if(zoneName.compare(0, 3, "it_") == 0)
{
return ZoneLanguage::LANGUAGE_ITALIAN;
}
if(zoneName.compare(0, 3, "sp_") == 0)
{
return ZoneLanguage::LANGUAGE_SPANISH;
}
if(zoneName.compare(0, 3, "br_") == 0)
{
return ZoneLanguage::LANGUAGE_BRITISH;
}
if(zoneName.compare(0, 3, "ru_") == 0)
{
return ZoneLanguage::LANGUAGE_RUSSIAN;
}
if(zoneName.compare(0, 3, "po_") == 0)
{
return ZoneLanguage::LANGUAGE_POLISH;
}
if(zoneName.compare(0, 3, "ko_") == 0)
{
return ZoneLanguage::LANGUAGE_KOREAN;
}
if(zoneName.compare(0, 3, "ja_") == 0)
{
return ZoneLanguage::LANGUAGE_JAPANESE;
}
if(zoneName.compare(0, 3, "cz_") == 0)
{
return ZoneLanguage::LANGUAGE_CZECH;
}
if(zoneName.compare(0, 3, "fj_") == 0)
{
return ZoneLanguage::LANGUAGE_FULL_JAPANESE;
}
if(zoneName.compare(0, 3, "bp_") == 0)
{
return ZoneLanguage::LANGUAGE_PORTUGUESE;
}
if(zoneName.compare(0, 3, "ms_") == 0)
{
return ZoneLanguage::LANGUAGE_MEXICAN_SPANISH;
}
return ZoneLanguage::LANGUAGE_NONE;
}
static bool CanLoad(ZoneHeader& header, bool* isSecure, bool* isOfficial, bool* isEncrypted) static bool CanLoad(ZoneHeader& header, bool* isSecure, bool* isOfficial, bool* isEncrypted)
{ {
assert(isSecure != nullptr); assert(isSecure != nullptr);
@ -220,6 +290,7 @@ public:
// Create new zone // Create new zone
auto* zone = new Zone(fileName, 0, new GameAssetPoolT6(0), &game_t6); auto* zone = new Zone(fileName, 0, new GameAssetPoolT6(0), &game_t6);
zone->m_language = GetZoneLanguage(fileName);
// File is supported. Now setup all required steps for loading this file. // File is supported. Now setup all required steps for loading this file.
auto* zoneLoader = new ZoneLoader(zone); auto* zoneLoader = new ZoneLoader(zone);