aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp50
-rw-r--r--src/server/game/DataStores/DB2Structure.h20
-rw-r--r--src/server/game/DataStores/DB2Utility.cpp12
-rw-r--r--src/server/game/DataStores/DB2Utility.h4
-rw-r--r--src/server/game/DataStores/DBCEnums.h2
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp4
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp2
-rw-r--r--src/server/game/World/World.cpp54
-rw-r--r--src/server/game/World/World.h1
-rw-r--r--src/server/shared/Common.h17
-rw-r--r--src/server/shared/DataStores/DB2FileLoader.cpp10
-rw-r--r--src/server/shared/DataStores/DB2FileLoader.h2
-rw-r--r--src/server/shared/DataStores/DB2Store.h31
-rw-r--r--src/server/shared/DataStores/DBCFileLoader.cpp9
-rw-r--r--src/server/shared/Define.h4
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