diff options
-rw-r--r-- | src/server/game/DataStores/DB2Stores.cpp | 50 | ||||
-rw-r--r-- | src/server/game/DataStores/DB2Structure.h | 20 | ||||
-rw-r--r-- | src/server/game/DataStores/DB2Utility.cpp | 12 | ||||
-rw-r--r-- | src/server/game/DataStores/DB2Utility.h | 4 | ||||
-rw-r--r-- | src/server/game/DataStores/DBCEnums.h | 2 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 2 | ||||
-rw-r--r-- | src/server/game/World/World.cpp | 54 | ||||
-rw-r--r-- | src/server/game/World/World.h | 1 | ||||
-rw-r--r-- | src/server/shared/Common.h | 17 | ||||
-rw-r--r-- | src/server/shared/DataStores/DB2FileLoader.cpp | 10 | ||||
-rw-r--r-- | src/server/shared/DataStores/DB2FileLoader.h | 2 | ||||
-rw-r--r-- | src/server/shared/DataStores/DB2Store.h | 31 | ||||
-rw-r--r-- | src/server/shared/DataStores/DBCFileLoader.cpp | 9 | ||||
-rw-r--r-- | src/server/shared/Define.h | 4 |
15 files changed, 105 insertions, 117 deletions
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 59926cd2b5c..68bf07418f5 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -20,6 +20,7 @@ #include "DB2Utility.h" #include "Common.h" #include "Log.h" +#include "World.h" DB2Storage<ItemEntry> sItemStore(Itemfmt, &DB2Utilities::HasItemEntry, &DB2Utilities::WriteItemDbReply); DB2Storage<ItemCurrencyCostEntry> sItemCurrencyCostStore(ItemCurrencyCostfmt); @@ -27,7 +28,7 @@ DB2Storage<ItemExtendedCostEntry> sItemExtendedCostStore(ItemExtendedCostEntryfm DB2Storage<ItemSparseEntry> sItemSparseStore(ItemSparsefmt, &DB2Utilities::HasItemSparseEntry, &DB2Utilities::WriteItemSparseDbReply); DB2Storage<KeyChainEntry> sKeyChainStore(KeyChainfmt); -typedef std::list<std::string> StoreProblemList1; +typedef std::list<std::string> DB2StoreProblemList; typedef std::map<uint32 /*hash*/, DB2StorageBase*> DB2StorageMap; DB2StorageMap DB2Stores; @@ -42,18 +43,8 @@ static bool LoadDB2_assert_print(uint32 fsize, uint32 rsize, std::string const& return false; } -struct LocalDB2Data -{ - LocalDB2Data(LocaleConstant loc) : defaultLocale(loc), availableDb2Locales(0xFFFFFFFF) {} - - LocaleConstant defaultLocale; - - // bitmasks for index of fullLocaleNameList - uint32 availableDb2Locales; -}; - template<class T> -inline void LoadDB2(StoreProblemList1& errlist, DB2Storage<T>& storage, std::string const& db2_path, std::string const& filename) +inline void LoadDB2(uint32& availableDb2Locales, DB2StoreProblemList& errlist, DB2Storage<T>& storage, std::string const& db2_path, std::string const& filename) { // compatibility format and C++ structure sizes ASSERT(DB2FileLoader::GetFormatRecordSize(storage.GetFormat()) == sizeof(T) || LoadDB2_assert_print(DB2FileLoader::GetFormatRecordSize(storage.GetFormat()), sizeof(T), filename)); @@ -61,7 +52,26 @@ inline void LoadDB2(StoreProblemList1& errlist, DB2Storage<T>& storage, std::str ++DB2FilesCount; std::string db2_filename = db2_path + filename; - if (!storage.Load(db2_filename.c_str())) + if (storage.Load(db2_filename.c_str(), uint32(sWorld->GetDefaultDbcLocale()))) + { + for (uint32 i = 0; i < TOTAL_LOCALES; ++i) + { + if (!(availableDb2Locales & (1 << i))) + continue; + + if (uint32(sWorld->GetDefaultDbcLocale()) == i) + continue; + + std::string localizedName(db2_path); + localizedName.append(localeNames[i]); + localizedName.push_back('/'); + localizedName.append(filename); + + if (!storage.LoadStringsFrom(localizedName.c_str(), i)) + availableDb2Locales &= ~(1<<i); // mark as not available for speedup next checks + } + } + else { // sort problematic db2 to (1) non compatible and (2) nonexistent if (FILE* f = fopen(db2_filename.c_str(), "rb")) @@ -82,13 +92,15 @@ void LoadDB2Stores(std::string const& dataPath) { std::string db2Path = dataPath + "dbc/"; - StoreProblemList1 bad_db2_files; + DB2StoreProblemList bad_db2_files; + uint32 availableDb2Locales = 0xFF; + + LoadDB2(availableDb2Locales, bad_db2_files, sItemStore, db2Path, "Item.db2"); + LoadDB2(availableDb2Locales, bad_db2_files, sItemCurrencyCostStore, db2Path, "ItemCurrencyCost.db2"); + LoadDB2(availableDb2Locales, bad_db2_files, sItemSparseStore, db2Path, "Item-sparse.db2"); + LoadDB2(availableDb2Locales, bad_db2_files, sItemExtendedCostStore, db2Path, "ItemExtendedCost.db2"); + LoadDB2(availableDb2Locales, bad_db2_files, sKeyChainStore, db2Path, "KeyChain.db2"); - LoadDB2(bad_db2_files, sItemStore, db2Path, "Item.db2"); - LoadDB2(bad_db2_files, sItemCurrencyCostStore, db2Path, "ItemCurrencyCost.db2"); - LoadDB2(bad_db2_files, sItemSparseStore, db2Path, "Item-sparse.db2"); - LoadDB2(bad_db2_files, sItemExtendedCostStore, db2Path, "ItemExtendedCost.db2"); - LoadDB2(bad_db2_files, sKeyChainStore, db2Path, "KeyChain.db2"); // error checks if (bad_db2_files.size() >= DB2FilesCount) { diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 45b611180f4..81b3301ade0 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -19,18 +19,8 @@ #define TRINITY_DB2STRUCTURE_H #include "Common.h" -#include "DBCEnums.h" -#include "Define.h" -#include "Path.h" -#include "Util.h" -#include "Vehicle.h" -#include "SharedDefines.h" #include "ItemPrototype.h" -#include <map> -#include <set> -#include <vector> - // GCC has alternative #pragma pack(N) syntax and old gcc version does not support pack(push, N), also any gcc version does not support it at some platform #if defined(__GNUC__) #pragma pack(1) @@ -98,11 +88,11 @@ struct ItemSparseEntry int32 SpellCategory[MAX_ITEM_PROTO_SPELLS]; // 85 - 89 int32 SpellCategoryCooldown[MAX_ITEM_PROTO_SPELLS]; // 90 - 94 uint32 Bonding; // 95 - char* Name; // 96 - char* Name2; // 97 - char* Name3; // 98 - char* Name4; // 99 - char* Description; // 100 + LocalizedString* Name; // 96 + LocalizedString* Name2; // 97 + LocalizedString* Name3; // 98 + LocalizedString* Name4; // 99 + LocalizedString* Description; // 100 uint32 PageText; // 101 uint32 LanguageID; // 102 uint32 PageMaterial; // 103 diff --git a/src/server/game/DataStores/DB2Utility.cpp b/src/server/game/DataStores/DB2Utility.cpp index 4ff06298660..3cb0f40cf3d 100644 --- a/src/server/game/DataStores/DB2Utility.cpp +++ b/src/server/game/DataStores/DB2Utility.cpp @@ -33,7 +33,7 @@ bool DB2Utilities::HasItemSparseEntry(DB2Storage<ItemSparseEntry> const& /*store return ItemExists(id); } -void DB2Utilities::WriteItemDbReply(DB2Storage<ItemEntry> const& /*store*/, uint32 id, ByteBuffer& buffer) +void DB2Utilities::WriteItemDbReply(DB2Storage<ItemEntry> const& /*store*/, uint32 id, uint32 /*locale*/, ByteBuffer& buffer) { ItemTemplate const* proto = sObjectMgr->GetItemTemplate(id); ASSERT(proto); @@ -48,11 +48,13 @@ void DB2Utilities::WriteItemDbReply(DB2Storage<ItemEntry> const& /*store*/, uint buffer << uint32(proto->Sheath); } -void DB2Utilities::WriteItemSparseDbReply(DB2Storage<ItemSparseEntry> const& /*store*/, uint32 id, ByteBuffer& buffer) +void DB2Utilities::WriteItemSparseDbReply(DB2Storage<ItemSparseEntry> const& /*store*/, uint32 id, uint32 locale, ByteBuffer& buffer) { ItemTemplate const* proto = sObjectMgr->GetItemTemplate(id); ASSERT(proto); + ItemLocale const* localeData = locale ? sObjectMgr->GetItemLocale(id) : NULL; + buffer << uint32(proto->ItemId); buffer << uint32(proto->Quality); buffer << uint32(proto->Flags); @@ -117,6 +119,9 @@ void DB2Utilities::WriteItemSparseDbReply(DB2Storage<ItemSparseEntry> const& /*s // item name std::string name = proto->Name1; + if (localeData) + ObjectMgr::GetLocaleString(localeData->Name, locale, name); + buffer << uint16(name.length()); if (name.length()) buffer << name; @@ -125,6 +130,9 @@ void DB2Utilities::WriteItemSparseDbReply(DB2Storage<ItemSparseEntry> const& /*s buffer << uint16(0); std::string desc = proto->Description; + if (localeData) + ObjectMgr::GetLocaleString(localeData->Description, locale, desc); + buffer << uint16(desc.length()); if (desc.length()) buffer << desc; diff --git a/src/server/game/DataStores/DB2Utility.h b/src/server/game/DataStores/DB2Utility.h index 120ffd1cd27..82ef692d320 100644 --- a/src/server/game/DataStores/DB2Utility.h +++ b/src/server/game/DataStores/DB2Utility.h @@ -33,8 +33,8 @@ namespace DB2Utilities bool HasItemSparseEntry(DB2Storage<ItemSparseEntry> const& store, uint32 id); // - void WriteItemDbReply(DB2Storage<ItemEntry> const& store, uint32 id, ByteBuffer& buffer); - void WriteItemSparseDbReply(DB2Storage<ItemSparseEntry> const& store, uint32 id, ByteBuffer& buffer); + void WriteItemDbReply(DB2Storage<ItemEntry> const& store, uint32 id, uint32 locale, ByteBuffer& buffer); + void WriteItemSparseDbReply(DB2Storage<ItemSparseEntry> const& store, uint32 id, uint32 locale, ByteBuffer& buffer); } #endif // DB2PACKETWRITER_H diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index fc94b49a336..1daf69f0b5f 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -80,7 +80,7 @@ enum AchievementFlags ACHIEVEMENT_FLAG_SHOW_CRITERIA_MEMBERS = 0x00010000 // }; -enum +enum AchievementCriteriaLimits { MAX_CRITERIA_REQUIREMENTS = 2, MAX_ADDITIONAL_CRITERIA_CONDITIONS = 3 diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index e9181cebbc3..c897219604f 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -2392,7 +2392,7 @@ void ObjectMgr::LoadItemTemplates() itemTemplate.Class = db2Data->Class; itemTemplate.SubClass = db2Data->SubClass; itemTemplate.SoundOverrideSubclass = db2Data->SoundOverrideSubclass; - itemTemplate.Name1 = sparse->Name; + itemTemplate.Name1 = sparse->Name->Str[sWorld->GetDefaultDbcLocale()]; itemTemplate.DisplayInfoID = db2Data->DisplayId; itemTemplate.Quality = sparse->Quality; itemTemplate.Flags = sparse->Flags; @@ -2448,7 +2448,7 @@ void ObjectMgr::LoadItemTemplates() itemTemplate.SpellPPMRate = 0.0f; itemTemplate.Bonding = sparse->Bonding; - itemTemplate.Description = sparse->Description; + itemTemplate.Description = sparse->Description->Str[sWorld->GetDefaultDbcLocale()]; itemTemplate.PageText = sparse->PageText; itemTemplate.LanguageID = sparse->LanguageID; itemTemplate.PageMaterial = sparse->PageMaterial; diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 2d454dae927..c64e4ae915f 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -1919,7 +1919,7 @@ void WorldSession::HandleRequestHotfix(WorldPacket& recvPacket) size_t sizePos = data.wpos(); data << uint32(0); // size of next block - store->WriteRecord(entry, data); + store->WriteRecord(entry, uint32(GetSessionDbcLocale()), data); data.put<uint32>(sizePos, data.wpos() - sizePos - 4); SendPacket(&data); diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index c5d47dae56f..71439254647 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -407,6 +407,16 @@ void World::LoadConfigSettings(bool reload) sLog->LoadFromConfig(); } + m_defaultDbcLocale = LocaleConstant(ConfigMgr::GetIntDefault("DBC.Locale", 0)); + + if (m_defaultDbcLocale >= TOTAL_LOCALES) + { + sLog->outError(LOG_FILTER_SERVER_LOADING, "Incorrect DBC.Locale! Must be >= 0 and < %d (set to 0)", TOTAL_LOCALES); + m_defaultDbcLocale = LOCALE_enUS; + } + + sLog->outInfo(LOG_FILTER_SERVER_LOADING, "Using %s DBC Locale", localeNames[m_defaultDbcLocale]); + ///- Read the player limit and the Message of the day from the config file SetPlayerAmountLimit(ConfigMgr::GetIntDefault("PlayerLimit", 100)); SetMotd(ConfigMgr::GetStringDefault("Motd", "Welcome to a Trinity Core Server.")); @@ -1328,7 +1338,6 @@ void World::SetInitialWorldSettings() sLog->outInfo(LOG_FILTER_SERVER_LOADING, "Initialize data stores..."); LoadDBCStores(m_dataPath); LoadDB2Stores(m_dataPath); - DetectDBCLang(); sLog->outInfo(LOG_FILTER_SERVER_LOADING, "Loading SpellInfo store..."); sSpellMgr->LoadSpellInfoStore(); @@ -1853,49 +1862,6 @@ void World::SetInitialWorldSettings() sLog->SetRealmId(realmId); } -void World::DetectDBCLang() -{ - uint8 m_lang_confid = ConfigMgr::GetIntDefault("DBC.Locale", 0); - - if (m_lang_confid >= TOTAL_LOCALES) - { - sLog->outError(LOG_FILTER_SERVER_LOADING, "Incorrect DBC.Locale! Must be >= 0 and < %d (set to 0)", TOTAL_LOCALES); - m_lang_confid = LOCALE_enUS; - } - - /*ChrRacesEntry const* race = sChrRacesStore.LookupEntry(1); - - std::string availableLocalsStr; - - uint8 default_locale = TOTAL_LOCALES; - for (uint8 i = default_locale-1; i < TOTAL_LOCALES; --i) // -1 will be 255 due to uint8 - { - if (race->name[i][0] != '\0') // check by race names - { - default_locale = i; - m_availableDbcLocaleMask |= (1 << i); - availableLocalsStr += localeNames[i]; - availableLocalsStr += " "; - } - } - - if (default_locale != m_lang_confid && m_lang_confid < TOTAL_LOCALES && - (m_availableDbcLocaleMask & (1 << m_lang_confid))) - { - default_locale = m_lang_confid; - } - - if (default_locale >= TOTAL_LOCALES) - { - sLog->outError(LOG_FILTER_SERVER_LOADING, "Unable to determine your DBC Locale! (corrupt DBC?)"); - exit(1); - }*/ - - m_defaultDbcLocale = LocaleConstant(m_lang_confid); - - sLog->outInfo(LOG_FILTER_SERVER_LOADING, "Using %s DBC Locale", localeNames[m_defaultDbcLocale]); -} - void World::RecordTimeDiff(const char *text, ...) { if (m_updateTimeCount != 1) diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index d7c20b08941..1aa93ce5486 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -809,7 +809,6 @@ class World AccountTypes m_allowedSecurityLevel; LocaleConstant m_defaultDbcLocale; // from config for one from loaded DBC locales uint32 m_availableDbcLocaleMask; // by loaded DBC - void DetectDBCLang(); bool m_allowMovement; std::string m_motd; std::string m_dataPath; diff --git a/src/server/shared/Common.h b/src/server/shared/Common.h index 70ee32d2868..779eb95e291 100644 --- a/src/server/shared/Common.h +++ b/src/server/shared/Common.h @@ -181,6 +181,23 @@ LocaleConstant GetLocaleByName(const std::string& name); typedef std::vector<std::string> StringVector; +#if defined(__GNUC__) +#pragma pack(1) +#else +#pragma pack(push, 1) +#endif + +struct LocalizedString +{ + char const* Str[TOTAL_LOCALES]; +}; + +#if defined(__GNUC__) +#pragma pack() +#else +#pragma pack(pop) +#endif + // we always use stdlibc++ std::max/std::min, undefine some not C++ standard defines (Win API and some other platforms) #ifdef max #undef max diff --git a/src/server/shared/DataStores/DB2FileLoader.cpp b/src/server/shared/DataStores/DB2FileLoader.cpp index 83e6e83104f..7a27072dd20 100644 --- a/src/server/shared/DataStores/DB2FileLoader.cpp +++ b/src/server/shared/DataStores/DB2FileLoader.cpp @@ -365,7 +365,7 @@ char* DB2FileLoader::AutoProduceStringsArrayHolders(const char* format, char* da return stringHoldersPool; } -char* DB2FileLoader::AutoProduceStrings(const char* format, char* dataTable) +char* DB2FileLoader::AutoProduceStrings(const char* format, char* dataTable, uint32 locale) { if (strlen(format) != fieldCount) return NULL; @@ -391,14 +391,14 @@ char* DB2FileLoader::AutoProduceStrings(const char* format, char* dataTable) case FT_STRING: { // fill only not filled entries - char** slot = (char**)(&dataTable[offset]); - if (**((char***)slot) == nullStr) + LocalizedString* db2str = *(LocalizedString**)(&dataTable[offset]); + if (db2str->Str[locale] == nullStr) { const char * st = getRecord(y).getString(x); - *slot=stringPool + (st-(const char*)stringTable); + db2str->Str[locale] = stringPool + (st - (const char*)stringTable); } - offset+=sizeof(char*); + offset += sizeof(char*); break; } } diff --git a/src/server/shared/DataStores/DB2FileLoader.h b/src/server/shared/DataStores/DB2FileLoader.h index 5d3c8449442..86350ebf1d6 100644 --- a/src/server/shared/DataStores/DB2FileLoader.h +++ b/src/server/shared/DataStores/DB2FileLoader.h @@ -80,7 +80,7 @@ class DB2FileLoader bool IsLoaded() const { return (data != NULL); } char* AutoProduceData(const char* fmt, uint32& count, char**& indexTable); char* AutoProduceStringsArrayHolders(const char* fmt, char* dataTable); - char* AutoProduceStrings(const char* fmt, char* dataTable); + char* AutoProduceStrings(const char* fmt, char* dataTable, uint32 locale); static uint32 GetFormatRecordSize(const char * format, int32 * index_pos = NULL); static uint32 GetFormatStringsFields(const char * format); private: diff --git a/src/server/shared/DataStores/DB2Store.h b/src/server/shared/DataStores/DB2Store.h index e4f91beb592..22dbe4a361c 100644 --- a/src/server/shared/DataStores/DB2Store.h +++ b/src/server/shared/DataStores/DB2Store.h @@ -32,7 +32,7 @@ public: virtual bool HasRecord(uint32 id) const = 0; - virtual void WriteRecord(uint32 id, ByteBuffer& buffer) const = 0; + virtual void WriteRecord(uint32 id, uint32 locale, ByteBuffer& buffer) const = 0; protected: uint32 tableHash; @@ -48,7 +48,7 @@ bool DB2StorageHasEntry(DB2Storage<T> const& store, uint32 id) } template<class T> -void WriteDB2RecordToPacket(DB2Storage<T> const& store, uint32 id, ByteBuffer& buffer) +void WriteDB2RecordToPacket(DB2Storage<T> const& store, uint32 id, uint32 locale, ByteBuffer& buffer) { uint8 const* entry = (uint8 const*)store.LookupEntry(id); ASSERT(entry); @@ -73,10 +73,15 @@ void WriteDB2RecordToPacket(DB2Storage<T> const& store, uint32 id, ByteBuffer& b break; case FT_STRING: { - size_t len = strlen(*(char**)entry); + LocalizedString* locStr = *(LocalizedString**)entry; + if (locStr->Str[locale][0] == '\0') + locale = 0; + + char const* str = locStr->Str[locale]; + size_t len = strlen(str); buffer << uint16(len); if (len) - buffer << *(char**)entry; + buffer << str; entry += sizeof(char*); break; } @@ -97,13 +102,13 @@ class DB2Storage : public DB2StorageBase typedef std::list<char*> StringPoolList; typedef std::vector<T*> DataTableEx; typedef bool(*EntryChecker)(DB2Storage<T> const&, uint32); - typedef void(*PacketWriter)(DB2Storage<T> const&, uint32, ByteBuffer&); + typedef void(*PacketWriter)(DB2Storage<T> const&, uint32, uint32, ByteBuffer&); public: DB2Storage(char const* f, EntryChecker checkEntry = NULL, PacketWriter writePacket = NULL) : nCount(0), fieldCount(0), fmt(f), indexTable(NULL), m_dataTable(NULL) { - CheckEntry = checkEntry ? checkEntry : &DB2StorageHasEntry<T>; - WritePacket = writePacket ? writePacket : &WriteDB2RecordToPacket<T>; + CheckEntry = checkEntry ? checkEntry : (EntryChecker)&DB2StorageHasEntry<T>; + WritePacket = writePacket ? writePacket : (PacketWriter)&WriteDB2RecordToPacket<T>; } ~DB2Storage() { Clear(); } @@ -113,9 +118,9 @@ public: uint32 GetNumRows() const { return nCount; } char const* GetFormat() const { return fmt; } uint32 GetFieldCount() const { return fieldCount; } - void WriteRecord(uint32 id, ByteBuffer& buffer) const + void WriteRecord(uint32 id, uint32 locale, ByteBuffer& buffer) const { - WritePacket(*this, id, buffer); + WritePacket(*this, id, locale, buffer); } T* CreateEntry(uint32 id, bool evenIfExists = false) @@ -142,7 +147,7 @@ public: void EraseEntry(uint32 id) { indexTable[id] = NULL; } - bool Load(char const* fn) + bool Load(char const* fn, uint32 locale) { DB2FileLoader db2; // Check if load was sucessful, only then continue @@ -159,13 +164,13 @@ public: m_stringPoolList.push_back(db2.AutoProduceStringsArrayHolders(fmt, (char*)m_dataTable)); // load strings from dbc data - m_stringPoolList.push_back(db2.AutoProduceStrings(fmt, (char*)m_dataTable)); + m_stringPoolList.push_back(db2.AutoProduceStrings(fmt, (char*)m_dataTable, locale)); // error in dbc file at loading if NULL return indexTable!=NULL; } - bool LoadStringsFrom(char const* fn) + bool LoadStringsFrom(char const* fn, uint32 locale) { // DBC must be already loaded using Load if (!indexTable) @@ -177,7 +182,7 @@ public: return false; // load strings from another locale dbc data - m_stringPoolList.push_back(db2.AutoProduceStrings(fmt, (char*)m_dataTable)); + m_stringPoolList.push_back(db2.AutoProduceStrings(fmt, (char*)m_dataTable, locale)); return true; } diff --git a/src/server/shared/DataStores/DBCFileLoader.cpp b/src/server/shared/DataStores/DBCFileLoader.cpp index 5e82579d29d..3a61057510e 100644 --- a/src/server/shared/DataStores/DBCFileLoader.cpp +++ b/src/server/shared/DataStores/DBCFileLoader.cpp @@ -157,9 +157,6 @@ uint32 DBCFileLoader::GetFormatRecordSize(const char* format, int32* index_pos) case FT_NA: case FT_NA_BYTE: break; - case FT_LOGIC: - ASSERT(false && "Attempted to load DBC files that do not have field types that match what is in the core. Check DBCfmt.h or your DBC files."); - break; default: ASSERT(false && "Unknown field format character in DBCfmt.h"); break; @@ -251,9 +248,6 @@ char* DBCFileLoader::AutoProduceData(const char* format, uint32& records, char** *((char**)(&dataTable[offset])) = NULL; // will replace non-empty or "" strings in AutoProduceStrings offset += sizeof(char*); break; - case FT_LOGIC: - ASSERT(false && "Attempted to load DBC files that do not have field types that match what is in the core. Check DBCfmt.h or your DBC files."); - break; case FT_NA: case FT_NA_BYTE: case FT_SORT: @@ -308,9 +302,6 @@ char* DBCFileLoader::AutoProduceStrings(const char* format, char* dataTable) offset += sizeof(char*); break; } - case FT_LOGIC: - ASSERT(false && "Attempted to load DBC files that does not have field types that match what is in the core. Check DBCfmt.h or your DBC files."); - break; case FT_NA: case FT_NA_BYTE: case FT_SORT: diff --git a/src/server/shared/Define.h b/src/server/shared/Define.h index 27ef7791ab7..ab3a743315d 100644 --- a/src/server/shared/Define.h +++ b/src/server/shared/Define.h @@ -97,8 +97,8 @@ enum DBCFormer FT_BYTE='b', //uint8 FT_SORT='d', //sorted by this field, field is not included FT_IND='n', //the same, but parsed to data - FT_LOGIC='l', //Logical (boolean) - FT_SQL_PRESENT='p', //Used in sql format to mark column present in sql dbc + FT_SQL_PRESENT='p', //Used in sql format to mark column present in sql dbc FT_SQL_ABSENT='a' //Used in sql format to mark column absent in sql dbc }; + #endif //TRINITY_DEFINE_H |