diff options
Diffstat (limited to 'src/shared/Database')
38 files changed, 270 insertions, 2372 deletions
diff --git a/src/shared/Database/CMakeLists.txt b/src/shared/Database/CMakeLists.txt index 78cc48436e7..c8d087b518f 100644 --- a/src/shared/Database/CMakeLists.txt +++ b/src/shared/Database/CMakeLists.txt @@ -1,18 +1,15 @@ SET(trinitydatabase_STAT_SRCS - DBCStores.cpp - DBCStores.h - DBCStructure.h - DBCfmt.cpp + DBCFileLoader.cpp + DBCFileLoader.h + DBCStore.h Database.cpp Database.h - DatabaseEnv.h + DatabaseEnv.h DatabaseImpl.h DatabaseMysql.cpp DatabasePostgre.cpp DatabaseMysql.h DatabasePostgre.h - DatabaseSqlite.cpp - DatabaseSqlite.h Field.cpp Field.h MySQLDelayThread.h @@ -22,16 +19,12 @@ SET(trinitydatabase_STAT_SRCS QueryResultMysql.h QueryResultPostgre.cpp QueryResultPostgre.h - QueryResultSqlite.cpp - QueryResultSqlite.h SQLStorage.cpp SQLStorage.h SqlDelayThread.cpp SqlDelayThread.h SqlOperations.cpp SqlOperations.h - dbcfile.cpp - dbcfile.h ) add_library(trinitydatabase STATIC ${trinitydatabase_STAT_SRCS}) diff --git a/src/shared/Database/DBCEnums.h b/src/shared/Database/DBCEnums.h deleted file mode 100644 index d8699b2c240..00000000000 --- a/src/shared/Database/DBCEnums.h +++ /dev/null @@ -1,113 +0,0 @@ -/* -* Copyright (C) 2005-2008 MaNGOS <http://getmangos.com/> -* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#ifndef DBCENUMS_H -#define DBCENUMS_H - -// client supported max level for player/pets/etc. Avoid overflow or client stability affected. -// also see GT_MAX_LEVEL define -#define MAX_LEVEL 100 - -// Server side limitation. Base at used code requirements. -// also see MAX_LEVEL and GT_MAX_LEVEL define -#define STRONG_MAX_LEVEL 255 - -enum AreaTeams -{ - AREATEAM_NONE = 0, - AREATEAM_ALLY = 2, - AREATEAM_HORDE = 4 -}; - -enum AreaFlags -{ - AREA_FLAG_SNOW = 0x00000001, // snow (only Dun Morogh, Naxxramas, Razorfen Downs and Winterspring) - AREA_FLAG_UNK1 = 0x00000002, // unknown, (only Naxxramas and Razorfen Downs) - AREA_FLAG_UNK2 = 0x00000004, // Only used on development map - AREA_FLAG_SLAVE_CAPITAL = 0x00000008, // slave capital city flag? - AREA_FLAG_UNK3 = 0x00000010, // unknown - AREA_FLAG_SLAVE_CAPITAL2 = 0x00000020, // slave capital city flag? - AREA_FLAG_UNK4 = 0x00000040, // many zones have this flag - AREA_FLAG_ARENA = 0x00000080, // arena, both instanced and world arenas - AREA_FLAG_CAPITAL = 0x00000100, // main capital city flag - AREA_FLAG_CITY = 0x00000200, // only for one zone named "City" (where it located?) - AREA_FLAG_OUTLAND = 0x00000400, // outland zones? (only Eye of the Storm not have this flag, but have 0x00004000 flag) - AREA_FLAG_SANCTUARY = 0x00000800, // sanctuary area (PvP disabled) - AREA_FLAG_NEED_FLY = 0x00001000, // only Netherwing Ledge, Socrethar's Seat, Tempest Keep, The Arcatraz, The Botanica, The Mechanar, Sorrow Wing Point, Dragonspine Ridge, Netherwing Mines, Dragonmaw Base Camp, Dragonmaw Skyway - AREA_FLAG_UNUSED1 = 0x00002000, // not used now (no area/zones with this flag set in 2.4.2) - AREA_FLAG_OUTLAND2 = 0x00004000, // outland zones? (only Circle of Blood Arena not have this flag, but have 0x00000400 flag) - AREA_FLAG_PVP = 0x00008000, // pvp objective area? (Death's Door also has this flag although it's no pvp object area) - AREA_FLAG_ARENA_INSTANCE = 0x00010000, // used by instanced arenas only - AREA_FLAG_UNUSED2 = 0x00020000, // not used now (no area/zones with this flag set in 2.4.2) - AREA_FLAG_UNK5 = 0x00040000, // just used for Amani Pass, Hatchet Hills - AREA_FLAG_LOWLEVEL = 0x00100000 // used for some starting areas with area_level <=15 -}; - -enum FactionTemplateFlags -{ - FACTION_TEMPLATE_FLAG_CONTESTED_GUARD = 0x00001000, // faction will attack players that were involved in PvP combats -}; - -enum FactionMasks -{ - FACTION_MASK_PLAYER = 1, // any player - FACTION_MASK_ALLIANCE = 2, // player or creature from alliance team - FACTION_MASK_HORDE = 4, // player or creature from horde team - FACTION_MASK_MONSTER = 8 // aggressive creature from monster team - // if none flags set then non-aggressive creature -}; - -enum MapTypes -{ - MAP_COMMON = 0, - MAP_INSTANCE = 1, - MAP_RAID = 2, - MAP_BATTLEGROUND = 3, - MAP_ARENA = 4 -}; - -enum AbilytyLearnType -{ - ABILITY_LEARNED_ON_GET_PROFESSION_SKILL = 1, - ABILITY_LEARNED_ON_GET_RACE_OR_CLASS_SKILL = 2 -}; - -enum ItemEnchantmentType -{ - ITEM_ENCHANTMENT_TYPE_NONE = 0, - ITEM_ENCHANTMENT_TYPE_COMBAT_SPELL = 1, - ITEM_ENCHANTMENT_TYPE_DAMAGE = 2, - ITEM_ENCHANTMENT_TYPE_EQUIP_SPELL = 3, - ITEM_ENCHANTMENT_TYPE_RESISTANCE = 4, - ITEM_ENCHANTMENT_TYPE_STAT = 5, - ITEM_ENCHANTMENT_TYPE_TOTEM = 6 -}; - -enum TotemCategoryType -{ - TOTEM_CATEGORY_TYPE_KNIFE = 1, - TOTEM_CATEGORY_TYPE_TOTEM = 2, - TOTEM_CATEGORY_TYPE_ROD = 3, - TOTEM_CATEGORY_TYPE_PICK = 21, - TOTEM_CATEGORY_TYPE_STONE = 22, - TOTEM_CATEGORY_TYPE_HAMMER = 23, - TOTEM_CATEGORY_TYPE_SPANNER = 24 -}; - -#endif - diff --git a/src/shared/Database/dbcfile.cpp b/src/shared/Database/DBCFileLoader.cpp index 9b363dbff8d..23f602f5c93 100644 --- a/src/shared/Database/dbcfile.cpp +++ b/src/shared/Database/DBCFileLoader.cpp @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,15 +22,15 @@ #include <stdlib.h> #include <string.h> -#include "dbcfile.h" +#include "DBCFileLoader.h" -DBCFile::DBCFile() +DBCFileLoader::DBCFileLoader() { data = NULL; fieldsOffset = NULL; } -bool DBCFile::Load(const char *filename, const char *fmt) +bool DBCFileLoader::Load(const char *filename, const char *fmt) { uint32 header; @@ -39,23 +39,35 @@ bool DBCFile::Load(const char *filename, const char *fmt) delete [] data; data=NULL; } + FILE * f=fopen(filename,"rb"); if(!f)return false; - fread(&header,4,1,f); // Number of records + if(fread(&header,4,1,f)!=1) // Number of records + return false; + EndianConvert(header); if(header!=0x43424457) - { - //printf("not dbc file"); return false; //'WDBC' - } - fread(&recordCount,4,1,f); // Number of records + + if(fread(&recordCount,4,1,f)!=1) // Number of records + return false; + EndianConvert(recordCount); - fread(&fieldCount,4,1,f); // Number of fields + + if(fread(&fieldCount,4,1,f)!=1) // Number of fields + return false; + EndianConvert(fieldCount); - fread(&recordSize,4,1,f); // Size of a record + + if(fread(&recordSize,4,1,f)!=1) // Size of a record + return false; + EndianConvert(recordSize); - fread(&stringSize,4,1,f); // String size + + if(fread(&stringSize,4,1,f)!=1) // String size + return false; + EndianConvert(stringSize); fieldsOffset = new uint32[fieldCount]; @@ -71,12 +83,15 @@ bool DBCFile::Load(const char *filename, const char *fmt) data = new unsigned char[recordSize*recordCount+stringSize]; stringTable = data + recordSize*recordCount; - fread(data,recordSize*recordCount+stringSize,1,f); + + if(fread(data,recordSize*recordCount+stringSize,1,f)!=1) + return false; + fclose(f); return true; } -DBCFile::~DBCFile() +DBCFileLoader::~DBCFileLoader() { if(data) delete [] data; @@ -84,13 +99,13 @@ DBCFile::~DBCFile() delete [] fieldsOffset; } -DBCFile::Record DBCFile::getRecord(size_t id) +DBCFileLoader::Record DBCFileLoader::getRecord(size_t id) { assert(data); return Record(*this, data + id*recordSize); } -uint32 DBCFile::GetFormatRecordSize(const char * format,int32* index_pos) +uint32 DBCFileLoader::GetFormatRecordSize(const char * format,int32* index_pos) { uint32 recordsize = 0; int32 i = -1; @@ -122,7 +137,7 @@ uint32 DBCFile::GetFormatRecordSize(const char * format,int32* index_pos) return recordsize; } -char* DBCFile::AutoProduceData(const char* format, uint32& records, char**& indexTable) +char* DBCFileLoader::AutoProduceData(const char* format, uint32& records, char**& indexTable) { /* format STRING, NA, FLOAT,NA,INT <=> @@ -205,7 +220,7 @@ char* DBCFile::AutoProduceData(const char* format, uint32& records, char**& inde return dataTable; } -char* DBCFile::AutoProduceStrings(const char* format, char* dataTable) +char* DBCFileLoader::AutoProduceStrings(const char* format, char* dataTable) { if(strlen(format)!=fieldCount) return NULL; diff --git a/src/shared/Database/dbcfile.h b/src/shared/Database/DBCFileLoader.h index aa36f6003dc..13562148dfc 100644 --- a/src/shared/Database/dbcfile.h +++ b/src/shared/Database/DBCFileLoader.h @@ -1,7 +1,5 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> - * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,8 +16,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef DBCFILE_H -#define DBCFILE_H +#ifndef DBC_FILE_LOADER_H +#define DBC_FILE_LOADER_H #include "Platform/Define.h" #include "Utilities/ByteConverter.h" #include <cassert> @@ -37,11 +35,11 @@ enum FT_LOGIC='l' //Logical (boolean) }; -class DBCFile +class DBCFileLoader { public: - DBCFile(); - ~DBCFile(); + DBCFileLoader(); + ~DBCFileLoader(); bool Load(const char *filename, const char *fmt); @@ -77,11 +75,11 @@ class DBCFile } private: - Record(DBCFile &file_, unsigned char *offset_): offset(offset_), file(file_) {} + Record(DBCFileLoader &file_, unsigned char *offset_): offset(offset_), file(file_) {} unsigned char *offset; - DBCFile &file; + DBCFileLoader &file; - friend class DBCFile; + friend class DBCFileLoader; }; @@ -107,4 +105,3 @@ class DBCFile unsigned char *stringTable; }; #endif - diff --git a/src/shared/Database/DBCStore.h b/src/shared/Database/DBCStore.h new file mode 100644 index 00000000000..523d5c5a0b3 --- /dev/null +++ b/src/shared/Database/DBCStore.h @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef DBCSTORE_H +#define DBCSTORE_H + +#include "DBCFileLoader.h" + +template<class T> +class DBCStorage +{ + typedef std::list<char*> StringPoolList; + public: + explicit DBCStorage(const char *f) : nCount(0), fieldCount(0), fmt(f), indexTable(NULL), m_dataTable(NULL) { } + ~DBCStorage() { Clear(); } + + T const* LookupEntry(uint32 id) const { return (id>=nCount)?NULL:indexTable[id]; } + uint32 GetNumRows() const { return nCount; } + char const* GetFormat() const { return fmt; } + uint32 GetFieldCount() const { return fieldCount; } + + bool Load(char const* fn) + { + DBCFileLoader dbc; + // Check if load was sucessful, only then continue + if(!dbc.Load(fn, fmt)) + return false; + + fieldCount = dbc.GetCols(); + m_dataTable = (T*)dbc.AutoProduceData(fmt,nCount,(char**&)indexTable); + m_stringPoolList.push_back(dbc.AutoProduceStrings(fmt,(char*)m_dataTable)); + + // error in dbc file at loading if NULL + return indexTable!=NULL; + } + + bool LoadStringsFrom(char const* fn) + { + // DBC must be already loaded using Load + if(!indexTable) + return false; + + DBCFileLoader dbc; + // Check if load was successful, only then continue + if(!dbc.Load(fn, fmt)) + return false; + + m_stringPoolList.push_back(dbc.AutoProduceStrings(fmt,(char*)m_dataTable)); + + return true; + } + + void Clear() + { + if (!indexTable) + return; + + delete[] ((char*)indexTable); + indexTable = NULL; + delete[] ((char*)m_dataTable); + m_dataTable = NULL; + + while(!m_stringPoolList.empty()) + { + delete[] m_stringPoolList.front(); + m_stringPoolList.pop_front(); + } + nCount = 0; + } + + private: + uint32 nCount; + uint32 fieldCount; + char const* fmt; + T** indexTable; + T* m_dataTable; + StringPoolList m_stringPoolList; +}; +#endif diff --git a/src/shared/Database/DBCStores.cpp b/src/shared/Database/DBCStores.cpp deleted file mode 100644 index 2031457ceaf..00000000000 --- a/src/shared/Database/DBCStores.cpp +++ /dev/null @@ -1,654 +0,0 @@ -/* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> - * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "DBCStores.h" -//#include "DataStore.h" -#include "Policies/SingletonImp.h" -#include "Log.h" -#include "ProgressBar.h" - -#include "DBCfmt.cpp" - -#include <map> - -typedef std::map<uint16,uint32> AreaFlagByAreaID; -typedef std::map<uint32,uint32> AreaFlagByMapID; - -DBCStorage <AreaTableEntry> sAreaStore(AreaTableEntryfmt); -static AreaFlagByAreaID sAreaFlagByAreaID; -static AreaFlagByMapID sAreaFlagByMapID; // for instances without generated *.map files - -DBCStorage <AreaTriggerEntry> sAreaTriggerStore(AreaTriggerEntryfmt); -DBCStorage <AuctionHouseEntry> sAuctionHouseStore(AuctionHouseEntryfmt); -DBCStorage <BankBagSlotPricesEntry> sBankBagSlotPricesStore(BankBagSlotPricesEntryfmt); -DBCStorage <BattlemasterListEntry> sBattlemasterListStore(BattlemasterListEntryfmt); -DBCStorage <CharStartOutfitEntry> sCharStartOutfitStore(CharStartOutfitEntryfmt); -DBCStorage <CharTitlesEntry> sCharTitlesStore(CharTitlesEntryfmt); -DBCStorage <ChatChannelsEntry> sChatChannelsStore(ChatChannelsEntryfmt); -DBCStorage <ChrClassesEntry> sChrClassesStore(ChrClassesEntryfmt); -DBCStorage <ChrRacesEntry> sChrRacesStore(ChrRacesEntryfmt); -DBCStorage <CreatureDisplayInfoEntry> sCreatureDisplayInfoStore(CreatureDisplayInfofmt); -DBCStorage <CreatureFamilyEntry> sCreatureFamilyStore(CreatureFamilyfmt); -DBCStorage <CreatureSpellDataEntry> sCreatureSpellDataStore(CreatureSpellDatafmt); - -DBCStorage <DurabilityQualityEntry> sDurabilityQualityStore(DurabilityQualityfmt); -DBCStorage <DurabilityCostsEntry> sDurabilityCostsStore(DurabilityCostsfmt); - -DBCStorage <EmotesTextEntry> sEmotesTextStore(EmoteEntryfmt); - -typedef std::map<uint32,SimpleFactionsList> FactionTeamMap; -static FactionTeamMap sFactionTeamMap; -DBCStorage <FactionEntry> sFactionStore(FactionEntryfmt); -DBCStorage <FactionTemplateEntry> sFactionTemplateStore(FactionTemplateEntryfmt); - -DBCStorage <GemPropertiesEntry> sGemPropertiesStore(GemPropertiesEntryfmt); - -DBCStorage <GtCombatRatingsEntry> sGtCombatRatingsStore(GtCombatRatingsfmt); -DBCStorage <GtChanceToMeleeCritBaseEntry> sGtChanceToMeleeCritBaseStore(GtChanceToMeleeCritBasefmt); -DBCStorage <GtChanceToMeleeCritEntry> sGtChanceToMeleeCritStore(GtChanceToMeleeCritfmt); -DBCStorage <GtChanceToSpellCritBaseEntry> sGtChanceToSpellCritBaseStore(GtChanceToSpellCritBasefmt); -DBCStorage <GtChanceToSpellCritEntry> sGtChanceToSpellCritStore(GtChanceToSpellCritfmt); -DBCStorage <GtOCTRegenHPEntry> sGtOCTRegenHPStore(GtOCTRegenHPfmt); -//DBCStorage <GtOCTRegenMPEntry> sGtOCTRegenMPStore(GtOCTRegenMPfmt); -- not used currently -DBCStorage <GtRegenHPPerSptEntry> sGtRegenHPPerSptStore(GtRegenHPPerSptfmt); -DBCStorage <GtRegenMPPerSptEntry> sGtRegenMPPerSptStore(GtRegenMPPerSptfmt); -DBCStorage <ItemEntry> sItemStore(Itemfmt); -//DBCStorage <ItemCondExtCostsEntry> sItemCondExtCostsStore(ItemCondExtCostsEntryfmt); -//DBCStorage <ItemDisplayInfoEntry> sItemDisplayInfoStore(ItemDisplayTemplateEntryfmt); -- not used currently -DBCStorage <ItemExtendedCostEntry> sItemExtendedCostStore(ItemExtendedCostEntryfmt); -DBCStorage <ItemRandomPropertiesEntry> sItemRandomPropertiesStore(ItemRandomPropertiesfmt); -DBCStorage <ItemRandomSuffixEntry> sItemRandomSuffixStore(ItemRandomSuffixfmt); -DBCStorage <ItemSetEntry> sItemSetStore(ItemSetEntryfmt); - -DBCStorage <LockEntry> sLockStore(LockEntryfmt); - -DBCStorage <MailTemplateEntry> sMailTemplateStore(MailTemplateEntryfmt); -DBCStorage <MapEntry> sMapStore(MapEntryfmt); - -DBCStorage <QuestSortEntry> sQuestSortStore(QuestSortEntryfmt); - -DBCStorage <RandomPropertiesPointsEntry> sRandomPropertiesPointsStore(RandomPropertiesPointsfmt); - -DBCStorage <SkillLineEntry> sSkillLineStore(SkillLinefmt); -DBCStorage <SkillLineAbilityEntry> sSkillLineAbilityStore(SkillLineAbilityfmt); - -DBCStorage <SoundEntriesEntry> sSoundEntriesStore(SoundEntriesfmt); - -DBCStorage <SpellItemEnchantmentEntry> sSpellItemEnchantmentStore(SpellItemEnchantmentfmt); -DBCStorage <SpellItemEnchantmentConditionEntry> sSpellItemEnchantmentConditionStore(SpellItemEnchantmentConditionfmt); -DBCStorage <SpellEntry> sSpellStore(SpellEntryfmt); -SpellCategoryStore sSpellCategoryStore; -PetFamilySpellsStore sPetFamilySpellsStore; - -DBCStorage <SpellCastTimesEntry> sSpellCastTimesStore(SpellCastTimefmt); -DBCStorage <SpellDurationEntry> sSpellDurationStore(SpellDurationfmt); -DBCStorage <SpellFocusObjectEntry> sSpellFocusObjectStore(SpellFocusObjectfmt); -DBCStorage <SpellRadiusEntry> sSpellRadiusStore(SpellRadiusfmt); -DBCStorage <SpellRangeEntry> sSpellRangeStore(SpellRangefmt); -DBCStorage <SpellShapeshiftEntry> sSpellShapeshiftStore(SpellShapeshiftfmt); -DBCStorage <StableSlotPricesEntry> sStableSlotPricesStore(StableSlotPricesfmt); -DBCStorage <TalentEntry> sTalentStore(TalentEntryfmt); -TalentSpellPosMap sTalentSpellPosMap; -DBCStorage <TalentTabEntry> sTalentTabStore(TalentTabEntryfmt); - -// store absolute bit position for first rank for talent inspect -typedef std::map<uint32,uint32> TalentInspectMap; -static TalentInspectMap sTalentPosInInspect; -static TalentInspectMap sTalentTabSizeInInspect; -static uint32 sTalentTabPages[12/*MAX_CLASSES*/][3]; - -DBCStorage <TaxiNodesEntry> sTaxiNodesStore(TaxiNodesEntryfmt); -TaxiMask sTaxiNodesMask; - -// DBC used only for initialization sTaxiPathSetBySource at startup. -TaxiPathSetBySource sTaxiPathSetBySource; -DBCStorage <TaxiPathEntry> sTaxiPathStore(TaxiPathEntryfmt); - -// DBC used only for initialization sTaxiPathSetBySource at startup. -TaxiPathNodesByPath sTaxiPathNodesByPath; - -static DBCStorage <TaxiPathNodeEntry> sTaxiPathNodeStore(TaxiPathNodeEntryfmt); -DBCStorage <TotemCategoryEntry> sTotemCategoryStore(TotemCategoryEntryfmt); -DBCStorage <WorldMapAreaEntry> sWorldMapAreaStore(WorldMapAreaEntryfmt); -DBCStorage <WorldSafeLocsEntry> sWorldSafeLocsStore(WorldSafeLocsEntryfmt); - -typedef std::list<std::string> StoreProblemList; - -static bool LoadDBC_assert_print(uint32 fsize,uint32 rsize, const std::string& filename) -{ - sLog.outError("ERROR: Size of '%s' setted by format string (%u) not equal size of C++ structure (%u).",filename.c_str(),fsize,rsize); - - // assert must fail after function call - return false; -} - -template<class T> -inline void LoadDBC(uint32& availableDbcLocales,barGoLink& bar, StoreProblemList& errlist, DBCStorage<T>& storage, const std::string& dbc_path, const std::string& filename) -{ - // compatibility format and C++ structure sizes - assert(DBCFile::GetFormatRecordSize(storage.GetFormat()) == sizeof(T) || LoadDBC_assert_print(DBCFile::GetFormatRecordSize(storage.GetFormat()),sizeof(T),filename)); - - std::string dbc_filename = dbc_path + filename; - if(storage.Load(dbc_filename.c_str())) - { - bar.step(); - for(uint8 i = 0; i < MAX_LOCALE; ++i) - { - if(!(availableDbcLocales & (1 << i))) - continue; - - std::string dbc_filename_loc = dbc_path + localeNames[i] + "/" + filename; - if(!storage.LoadStringsFrom(dbc_filename_loc.c_str())) - availableDbcLocales &= ~(1<<i); // mark as not available for speedup next checks - } - } - else - { - // sort problematic dbc to (1) non compatible and (2) non-existed - FILE * f=fopen(dbc_filename.c_str(),"rb"); - if(f) - { - char buf[100]; - snprintf(buf,100," (exist, but have %d fields instead %d) Wrong client version DBC file?",storage.GetFieldCount(),strlen(storage.GetFormat())); - errlist.push_back(dbc_filename + buf); - fclose(f); - } - else - errlist.push_back(dbc_filename); - } -} - -void LoadDBCStores(const std::string& dataPath) -{ - std::string dbcPath = dataPath+"dbc/"; - - const uint32 DBCFilesCount = 57; - - barGoLink bar( DBCFilesCount ); - - StoreProblemList bad_dbc_files; - uint32 availableDbcLocales = 0xFFFFFFFF; - - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sAreaStore, dbcPath,"AreaTable.dbc"); - - // must be after sAreaStore loading - for(uint32 i = 0; i < sAreaStore.GetNumRows(); ++i) // areaflag numbered from 0 - { - if(AreaTableEntry const* area = sAreaStore.LookupEntry(i)) - { - // fill AreaId->DBC records - sAreaFlagByAreaID.insert(AreaFlagByAreaID::value_type(uint16(area->ID),area->exploreFlag)); - - // fill MapId->DBC records ( skip sub zones and continents ) - if(area->zone==0 && area->mapid != 0 && area->mapid != 1 && area->mapid != 530 ) - sAreaFlagByMapID.insert(AreaFlagByMapID::value_type(area->mapid,area->exploreFlag)); - } - } - - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sAreaTriggerStore, dbcPath,"AreaTrigger.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sAuctionHouseStore, dbcPath,"AuctionHouse.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sBankBagSlotPricesStore, dbcPath,"BankBagSlotPrices.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sBattlemasterListStore, dbcPath,"BattlemasterList.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sCharStartOutfitStore, dbcPath,"CharStartOutfit.dbc"); - - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sCharTitlesStore, dbcPath,"CharTitles.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sChatChannelsStore, dbcPath,"ChatChannels.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sChrClassesStore, dbcPath,"ChrClasses.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sChrRacesStore, dbcPath,"ChrRaces.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sCreatureDisplayInfoStore, dbcPath,"CreatureDisplayInfo.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sCreatureFamilyStore, dbcPath,"CreatureFamily.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sCreatureSpellDataStore, dbcPath,"CreatureSpellData.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sDurabilityCostsStore, dbcPath,"DurabilityCosts.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sDurabilityQualityStore, dbcPath,"DurabilityQuality.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sEmotesTextStore, dbcPath,"EmotesText.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sFactionStore, dbcPath,"Faction.dbc"); - for (uint32 i=0;i<sFactionStore.GetNumRows(); ++i) - { - FactionEntry const * faction = sFactionStore.LookupEntry(i); - if (faction && faction->team) - { - SimpleFactionsList &flist = sFactionTeamMap[faction->team]; - flist.push_back(i); - } - } - - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sFactionTemplateStore, dbcPath,"FactionTemplate.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sGemPropertiesStore, dbcPath,"GemProperties.dbc"); - - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sGtCombatRatingsStore, dbcPath,"gtCombatRatings.dbc"); - - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sGtChanceToMeleeCritBaseStore, dbcPath,"gtChanceToMeleeCritBase.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sGtChanceToMeleeCritStore, dbcPath,"gtChanceToMeleeCrit.dbc"); - - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sGtChanceToSpellCritBaseStore, dbcPath,"gtChanceToSpellCritBase.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sGtChanceToSpellCritStore, dbcPath,"gtChanceToSpellCrit.dbc"); - - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sGtOCTRegenHPStore, dbcPath,"gtOCTRegenHP.dbc"); - //LoadDBC(availableDbcLocales,bar,bad_dbc_files,sGtOCTRegenMPStore, dbcPath,"gtOCTRegenMP.dbc"); -- not used currently - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sGtRegenHPPerSptStore, dbcPath,"gtRegenHPPerSpt.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sGtRegenMPPerSptStore, dbcPath,"gtRegenMPPerSpt.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sItemStore, dbcPath,"Item.dbc"); - //LoadDBC(availableDbcLocales,bar,bad_dbc_files,sItemDisplayInfoStore, dbcPath,"ItemDisplayInfo.dbc"); -- not used currently - //LoadDBC(availableDbcLocales,bar,bad_dbc_files,sItemCondExtCostsStore, dbcPath,"ItemCondExtCosts.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sItemExtendedCostStore, dbcPath,"ItemExtendedCost.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sItemRandomPropertiesStore,dbcPath,"ItemRandomProperties.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sItemRandomSuffixStore, dbcPath,"ItemRandomSuffix.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sItemSetStore, dbcPath,"ItemSet.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sLockStore, dbcPath,"Lock.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sMailTemplateStore, dbcPath,"MailTemplate.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sMapStore, dbcPath,"Map.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sQuestSortStore, dbcPath,"QuestSort.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sRandomPropertiesPointsStore, dbcPath,"RandPropPoints.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sSkillLineStore, dbcPath,"SkillLine.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sSkillLineAbilityStore, dbcPath,"SkillLineAbility.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sSoundEntriesStore, dbcPath,"SoundEntries.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sSpellStore, dbcPath,"Spell.dbc"); - for(uint32 i = 1; i < sSpellStore.GetNumRows(); ++i) - { - SpellEntry const * spell = sSpellStore.LookupEntry(i); - if(spell && spell->Category) - sSpellCategoryStore[spell->Category].insert(i); - - // DBC not support uint64 fields but SpellEntry have SpellFamilyFlags mapped at 2 uint32 fields - // uint32 field already converted to bigendian if need, but must be swapped for correct uint64 bigendian view - #if TRINITY_ENDIAN == TRINITY_BIGENDIAN - std::swap(*((uint32*)(&spell->SpellFamilyFlags)),*(((uint32*)(&spell->SpellFamilyFlags))+1)); - #endif - } - - for (uint32 j = 0; j < sSkillLineAbilityStore.GetNumRows(); ++j) - { - SkillLineAbilityEntry const *skillLine = sSkillLineAbilityStore.LookupEntry(j); - - if(!skillLine) - continue; - - SpellEntry const* spellInfo = sSpellStore.LookupEntry(skillLine->spellId); - - if(spellInfo && (spellInfo->Attributes & 0x1D0) == 0x1D0) - { - for (unsigned int i = 1; i < sCreatureFamilyStore.GetNumRows(); ++i) - { - CreatureFamilyEntry const* cFamily = sCreatureFamilyStore.LookupEntry(i); - if(!cFamily) - continue; - - if(skillLine->skillId != cFamily->skillLine[0] && skillLine->skillId != cFamily->skillLine[1]) - continue; - - sPetFamilySpellsStore[i].insert(spellInfo->Id); - } - } - } - - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sSpellCastTimesStore, dbcPath,"SpellCastTimes.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sSpellDurationStore, dbcPath,"SpellDuration.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sSpellFocusObjectStore, dbcPath,"SpellFocusObject.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sSpellItemEnchantmentStore,dbcPath,"SpellItemEnchantment.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sSpellItemEnchantmentConditionStore,dbcPath,"SpellItemEnchantmentCondition.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sSpellRadiusStore, dbcPath,"SpellRadius.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sSpellRangeStore, dbcPath,"SpellRange.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sSpellShapeshiftStore, dbcPath,"SpellShapeshiftForm.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sStableSlotPricesStore, dbcPath,"StableSlotPrices.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sTalentStore, dbcPath,"Talent.dbc"); - - // create talent spells set - for (unsigned int i = 0; i < sTalentStore.GetNumRows(); ++i) - { - TalentEntry const *talentInfo = sTalentStore.LookupEntry(i); - if (!talentInfo) continue; - for (int j = 0; j < 5; j++) - if(talentInfo->RankID[j]) - sTalentSpellPosMap[talentInfo->RankID[j]] = TalentSpellPos(i,j); - } - - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sTalentTabStore, dbcPath,"TalentTab.dbc"); - - // prepare fast data access to bit pos of talent ranks for use at inspecting - { - // fill table by amount of talent ranks and fill sTalentTabBitSizeInInspect - // store in with (row,col,talent)->size key for correct sorting by (row,col) - typedef std::map<uint32,uint32> TalentBitSize; - TalentBitSize sTalentBitSize; - for(uint32 i = 1; i < sTalentStore.GetNumRows(); ++i) - { - TalentEntry const *talentInfo = sTalentStore.LookupEntry(i); - if (!talentInfo) continue; - - TalentTabEntry const *talentTabInfo = sTalentTabStore.LookupEntry( talentInfo->TalentTab ); - if(!talentTabInfo) - continue; - - // find talent rank - uint32 curtalent_maxrank = 0; - for(uint32 k = 5; k > 0; --k) - { - if(talentInfo->RankID[k-1]) - { - curtalent_maxrank = k; - break; - } - } - - sTalentBitSize[(talentInfo->Row<<24) + (talentInfo->Col<<16)+talentInfo->TalentID] = curtalent_maxrank; - sTalentTabSizeInInspect[talentInfo->TalentTab] += curtalent_maxrank; - } - - // now have all max ranks (and then bit amount used for store talent ranks in inspect) - for(uint32 talentTabId = 1; talentTabId < sTalentTabStore.GetNumRows(); ++talentTabId) - { - TalentTabEntry const *talentTabInfo = sTalentTabStore.LookupEntry( talentTabId ); - if(!talentTabInfo) - continue; - - // store class talent tab pages - uint32 cls = 1; - for(uint32 m=1;!(m & talentTabInfo->ClassMask) && cls < 12 /*MAX_CLASSES*/;m <<=1, ++cls) {} - - sTalentTabPages[cls][talentTabInfo->tabpage]=talentTabId; - - // add total amount bits for first rank starting from talent tab first talent rank pos. - uint32 pos = 0; - for(TalentBitSize::iterator itr = sTalentBitSize.begin(); itr != sTalentBitSize.end(); ++itr) - { - uint32 talentId = itr->first & 0xFFFF; - TalentEntry const *talentInfo = sTalentStore.LookupEntry( talentId ); - if(!talentInfo) - continue; - - if(talentInfo->TalentTab != talentTabId) - continue; - - sTalentPosInInspect[talentId] = pos; - pos+= itr->second; - } - } - } - - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sTaxiNodesStore, dbcPath,"TaxiNodes.dbc"); - - // Initialize global taxinodes mask - memset(sTaxiNodesMask,0,sizeof(sTaxiNodesMask)); - for(uint32 i = 1; i < sTaxiNodesStore.GetNumRows(); ++i) - { - if(sTaxiNodesStore.LookupEntry(i)) - { - uint8 field = (uint8)((i - 1) / 32); - uint32 submask = 1<<((i-1)%32); - sTaxiNodesMask[field] |= submask; - } - } - - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sTaxiPathStore, dbcPath,"TaxiPath.dbc"); - for(uint32 i = 1; i < sTaxiPathStore.GetNumRows(); ++i) - if(TaxiPathEntry const* entry = sTaxiPathStore.LookupEntry(i)) - sTaxiPathSetBySource[entry->from][entry->to] = TaxiPathBySourceAndDestination(entry->ID,entry->price); - uint32 pathCount = sTaxiPathStore.GetNumRows(); - - //## TaxiPathNode.dbc ## Loaded only for initialization different structures - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sTaxiPathNodeStore, dbcPath,"TaxiPathNode.dbc"); - // Calculate path nodes count - std::vector<uint32> pathLength; - pathLength.resize(pathCount); // 0 and some other indexes not used - for(uint32 i = 1; i < sTaxiPathNodeStore.GetNumRows(); ++i) - if(TaxiPathNodeEntry const* entry = sTaxiPathNodeStore.LookupEntry(i)) - ++pathLength[entry->path]; - // Set path length - sTaxiPathNodesByPath.resize(pathCount); // 0 and some other indexes not used - for(uint32 i = 1; i < sTaxiPathNodesByPath.size(); ++i) - sTaxiPathNodesByPath[i].resize(pathLength[i]); - // fill data - for(uint32 i = 1; i < sTaxiPathNodeStore.GetNumRows(); ++i) - if(TaxiPathNodeEntry const* entry = sTaxiPathNodeStore.LookupEntry(i)) - sTaxiPathNodesByPath[entry->path][entry->index] = TaxiPathNode(entry->mapid,entry->x,entry->y,entry->z,entry->actionFlag,entry->delay); - sTaxiPathNodeStore.Clear(); - - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sTotemCategoryStore, dbcPath,"TotemCategory.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sWorldMapAreaStore, dbcPath,"WorldMapArea.dbc"); - LoadDBC(availableDbcLocales,bar,bad_dbc_files,sWorldSafeLocsStore, dbcPath,"WorldSafeLocs.dbc"); - - // error checks - if(bad_dbc_files.size() >= DBCFilesCount ) - { - sLog.outError("\nIncorrect DataDir value in Trinityd.conf or ALL required *.dbc files (%d) not found by path: %sdbc",DBCFilesCount,dataPath.c_str()); - exit(1); - } - else if(!bad_dbc_files.empty() ) - { - std::string str; - for(std::list<std::string>::iterator i = bad_dbc_files.begin(); i != bad_dbc_files.end(); ++i) - str += *i + "\n"; - - sLog.outError("\nSome required *.dbc files (%u from %d) not found or not compatible:\n%s",bad_dbc_files.size(),DBCFilesCount,str.c_str()); - exit(1); - } - - // check at up-to-date DBC files (53085 is last added spell in 2.4.3) - // check at up-to-date DBC files (17514 is last ID in SkillLineAbilities in 2.4.3) - // check at up-to-date DBC files (598 is last map added in 2.4.3) - // check at up-to-date DBC files (1127 is last gem property added in 2.4.3) - // check at up-to-date DBC files (2425 is last item extended cost added in 2.4.3) - // check at up-to-date DBC files (71 is last char title added in 2.4.3) - // check at up-to-date DBC files (1768 is last area added in 2.4.3) - if( !sSpellStore.LookupEntry(53085) || - !sSkillLineAbilityStore.LookupEntry(17514) || - !sMapStore.LookupEntry(598) || - !sGemPropertiesStore.LookupEntry(1127) || - !sItemExtendedCostStore.LookupEntry(2425) || - !sCharTitlesStore.LookupEntry(71) || - !sAreaStore.LookupEntry(1768) ) - { - sLog.outError("\nYou have _outdated_ DBC files. Please extract correct versions from current using client."); - exit(1); - } - - sLog.outString(); - sLog.outString( ">> Loaded %d data stores", DBCFilesCount ); - sLog.outString(); -} - -SimpleFactionsList const* GetFactionTeamList(uint32 faction) -{ - FactionTeamMap::const_iterator itr = sFactionTeamMap.find(faction); - if(itr==sFactionTeamMap.end()) - return NULL; - return &itr->second; -} - -char* GetPetName(uint32 petfamily, uint32 dbclang) -{ - if(!petfamily) - return NULL; - CreatureFamilyEntry const *pet_family = sCreatureFamilyStore.LookupEntry(petfamily); - if(!pet_family) - return NULL; - return pet_family->Name[dbclang]?pet_family->Name[dbclang]:NULL; -} - -TalentSpellPos const* GetTalentSpellPos(uint32 spellId) -{ - TalentSpellPosMap::const_iterator itr = sTalentSpellPosMap.find(spellId); - if(itr==sTalentSpellPosMap.end()) - return NULL; - - return &itr->second; -} - -uint32 GetTalentSpellCost(uint32 spellId) -{ - if(TalentSpellPos const* pos = GetTalentSpellPos(spellId)) - return pos->rank+1; - - return 0; -} - -int32 GetAreaFlagByAreaID(uint32 area_id) -{ - AreaFlagByAreaID::iterator i = sAreaFlagByAreaID.find(area_id); - if(i == sAreaFlagByAreaID.end()) - return -1; - - return i->second; -} - -AreaTableEntry const* GetAreaEntryByAreaID(uint32 area_id) -{ - int32 areaflag = GetAreaFlagByAreaID(area_id); - if(areaflag < 0) - return NULL; - - return sAreaStore.LookupEntry(areaflag ); -} - -AreaTableEntry const* GetAreaEntryByAreaFlagAndMap(uint32 area_flag,uint32 map_id) -{ - if(area_flag) - return sAreaStore.LookupEntry(area_flag); - - if(MapEntry const* mapEntry = sMapStore.LookupEntry(map_id)) - return GetAreaEntryByAreaID(mapEntry->linked_zone); - - return NULL; -} - -uint32 GetAreaFlagByMapId(uint32 mapid) -{ - AreaFlagByMapID::iterator i = sAreaFlagByMapID.find(mapid); - if(i == sAreaFlagByMapID.end()) - return 0; - else - return i->second; -} - -uint32 GetVirtualMapForMapAndZone(uint32 mapid, uint32 zoneId) -{ - if(mapid != 530) // speed for most cases - return mapid; - - if(WorldMapAreaEntry const* wma = sWorldMapAreaStore.LookupEntry(zoneId)) - return wma->virtual_map_id >= 0 ? wma->virtual_map_id : wma->map_id; - - return mapid; -} - -ContentLevels GetContentLevelsForMapAndZone(uint32 mapid, uint32 zoneId) -{ - mapid = GetVirtualMapForMapAndZone(mapid,zoneId); - if(mapid < 2) - return CONTENT_1_60; - - MapEntry const* mapEntry = sMapStore.LookupEntry(mapid); - if(!mapEntry) - return CONTENT_1_60; - - switch(mapEntry->Expansion()) - { - default: return CONTENT_1_60; - case 1: return CONTENT_61_70; - case 2: return CONTENT_71_80; - } -} - -ChatChannelsEntry const* GetChannelEntryFor(uint32 channel_id) -{ - // not sorted, numbering index from 0 - for(uint32 i = 0; i < sChatChannelsStore.GetNumRows(); ++i) - { - ChatChannelsEntry const* ch = sChatChannelsStore.LookupEntry(i); - if(ch && ch->ChannelID == channel_id) - return ch; - } - return NULL; -} - -bool IsTotemCategoryCompatiableWith(uint32 itemTotemCategoryId, uint32 requiredTotemCategoryId) -{ - if(requiredTotemCategoryId==0) - return true; - if(itemTotemCategoryId==0) - return false; - - TotemCategoryEntry const* itemEntry = sTotemCategoryStore.LookupEntry(itemTotemCategoryId); - if(!itemEntry) - return false; - TotemCategoryEntry const* reqEntry = sTotemCategoryStore.LookupEntry(requiredTotemCategoryId); - if(!reqEntry) - return false; - - if(itemEntry->categoryType!=reqEntry->categoryType) - return false; - - return (itemEntry->categoryMask & reqEntry->categoryMask)==reqEntry->categoryMask; -} - -void Zone2MapCoordinates(float& x,float& y,uint32 zone) -{ - WorldMapAreaEntry const* maEntry = sWorldMapAreaStore.LookupEntry(zone); - - // if not listed then map coordinates (instance) - if(!maEntry) - return; - - std::swap(x,y); // at client map coords swapped - x = x*((maEntry->x2-maEntry->x1)/100)+maEntry->x1; - y = y*((maEntry->y2-maEntry->y1)/100)+maEntry->y1; // client y coord from top to down -} - -void Map2ZoneCoordinates(float& x,float& y,uint32 zone) -{ - WorldMapAreaEntry const* maEntry = sWorldMapAreaStore.LookupEntry(zone); - - // if not listed then map coordinates (instance) - if(!maEntry) - return; - - x = (x-maEntry->x1)/((maEntry->x2-maEntry->x1)/100); - y = (y-maEntry->y1)/((maEntry->y2-maEntry->y1)/100); // client y coord from top to down - std::swap(x,y); // client have map coords swapped -} - -uint32 GetTalentInspectBitPosInTab(uint32 talentId) -{ - TalentInspectMap::const_iterator itr = sTalentPosInInspect.find(talentId); - if(itr == sTalentPosInInspect.end()) - return 0; - - return itr->second; -} - -uint32 GetTalentTabInspectBitSize(uint32 talentTabId) -{ - TalentInspectMap::const_iterator itr = sTalentTabSizeInInspect.find(talentTabId); - if(itr == sTalentTabSizeInInspect.end()) - return 0; - - return itr->second; -} - -uint32 const* GetTalentTabPages(uint32 cls) -{ - return sTalentTabPages[cls]; -} - -// script support functions -TRINITY_DLL_SPEC DBCStorage <SoundEntriesEntry> const* GetSoundEntriesStore() { return &sSoundEntriesStore; } -TRINITY_DLL_SPEC DBCStorage <SpellEntry> const* GetSpellStore() { return &sSpellStore; } -TRINITY_DLL_SPEC DBCStorage <SpellRangeEntry> const* GetSpellRangeStore() { return &sSpellRangeStore; } - diff --git a/src/shared/Database/DBCStores.h b/src/shared/Database/DBCStores.h deleted file mode 100644 index 4ad275653e7..00000000000 --- a/src/shared/Database/DBCStores.h +++ /dev/null @@ -1,208 +0,0 @@ -/* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> - * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef DBCSTORES_H -#define DBCSTORES_H - -#include "Common.h" -//#include "DataStore.h" -#include "dbcfile.h" -#include "DBCStructure.h" - -#include <list> - -typedef std::list<uint32> SimpleFactionsList; - -SimpleFactionsList const* GetFactionTeamList(uint32 faction); -char* GetPetName(uint32 petfamily, uint32 dbclang); -uint32 GetTalentSpellCost(uint32 spellId); -TalentSpellPos const* GetTalentSpellPos(uint32 spellId); - -int32 GetAreaFlagByAreaID(uint32 area_id); // -1 if not found -AreaTableEntry const* GetAreaEntryByAreaID(uint32 area_id); -AreaTableEntry const* GetAreaEntryByAreaFlagAndMap(uint32 area_flag,uint32 map_id); -uint32 GetAreaFlagByMapId(uint32 mapid); - -uint32 GetVirtualMapForMapAndZone(uint32 mapid, uint32 zoneId); - -enum ContentLevels -{ - CONTENT_1_60 = 0, - CONTENT_61_70, - CONTENT_71_80 -}; -ContentLevels GetContentLevelsForMapAndZone(uint32 mapid, uint32 zoneId); - -ChatChannelsEntry const* GetChannelEntryFor(uint32 channel_id); - -bool IsTotemCategoryCompatiableWith(uint32 itemTotemCategoryId, uint32 requiredTotemCategoryId); - -void Zone2MapCoordinates(float& x,float& y,uint32 zone); -void Map2ZoneCoordinates(float& x,float& y,uint32 zone); - -uint32 GetTalentInspectBitPosInTab(uint32 talentId); -uint32 GetTalentTabInspectBitSize(uint32 talentTabId); -uint32 const* /*[3]*/ GetTalentTabPages(uint32 cls); - -template<class T> -class DBCStorage -{ - typedef std::list<char*> StringPoolList; - public: - explicit DBCStorage(const char *f) : nCount(0), fieldCount(0), fmt(f), indexTable(NULL), m_dataTable(NULL) { } - ~DBCStorage() { Clear(); } - - T const* LookupEntry(uint32 id) const { return (id>=nCount)?NULL:indexTable[id]; } - uint32 GetNumRows() const { return nCount; } - char const* GetFormat() const { return fmt; } - uint32 GetFieldCount() const { return fieldCount; } - - bool Load(char const* fn) - { - DBCFile dbc; - // Check if load was sucessful, only then continue - if(!dbc.Load(fn, fmt)) - return false; - - fieldCount = dbc.GetCols(); - m_dataTable = (T*)dbc.AutoProduceData(fmt,nCount,(char**&)indexTable); - m_stringPoolList.push_back(dbc.AutoProduceStrings(fmt,(char*)m_dataTable)); - - // error in dbc file at loading if NULL - return indexTable!=NULL; - } - - bool LoadStringsFrom(char const* fn) - { - // DBC must be already loaded using Load - if(!indexTable) - return false; - - DBCFile dbc; - // Check if load was successful, only then continue - if(!dbc.Load(fn, fmt)) - return false; - - m_stringPoolList.push_back(dbc.AutoProduceStrings(fmt,(char*)m_dataTable)); - - return true; - } - - void Clear() - { - if (!indexTable) - return; - - delete[] ((char*)indexTable); - indexTable = NULL; - delete[] ((char*)m_dataTable); - m_dataTable = NULL; - - while(!m_stringPoolList.empty()) - { - delete[] m_stringPoolList.front(); - m_stringPoolList.pop_front(); - } - nCount = 0; - } - - private: - uint32 nCount; - uint32 fieldCount; - char const* fmt; - T** indexTable; - T* m_dataTable; - StringPoolList m_stringPoolList; -}; - -extern DBCStorage <AreaTableEntry> sAreaStore;// recommend access using functions -extern DBCStorage <AreaTriggerEntry> sAreaTriggerStore; -extern DBCStorage <AuctionHouseEntry> sAuctionHouseStore; -extern DBCStorage <BankBagSlotPricesEntry> sBankBagSlotPricesStore; -extern DBCStorage <BattlemasterListEntry> sBattlemasterListStore; -//extern DBCStorage <ChatChannelsEntry> sChatChannelsStore; -- accessed using function, no usable index -extern DBCStorage <CharStartOutfitEntry> sCharStartOutfitStore; -extern DBCStorage <CharTitlesEntry> sCharTitlesStore; -extern DBCStorage <ChrClassesEntry> sChrClassesStore; -extern DBCStorage <ChrRacesEntry> sChrRacesStore; -extern DBCStorage <CreatureDisplayInfoEntry> sCreatureDisplayInfoStore; -extern DBCStorage <CreatureFamilyEntry> sCreatureFamilyStore; -extern DBCStorage <CreatureSpellDataEntry> sCreatureSpellDataStore; -extern DBCStorage <DurabilityCostsEntry> sDurabilityCostsStore; -extern DBCStorage <DurabilityQualityEntry> sDurabilityQualityStore; -extern DBCStorage <EmotesTextEntry> sEmotesTextStore; -extern DBCStorage <FactionEntry> sFactionStore; -extern DBCStorage <FactionTemplateEntry> sFactionTemplateStore; -extern DBCStorage <GemPropertiesEntry> sGemPropertiesStore; - -extern DBCStorage <GtCombatRatingsEntry> sGtCombatRatingsStore; -extern DBCStorage <GtChanceToMeleeCritBaseEntry> sGtChanceToMeleeCritBaseStore; -extern DBCStorage <GtChanceToMeleeCritEntry> sGtChanceToMeleeCritStore; -extern DBCStorage <GtChanceToSpellCritBaseEntry> sGtChanceToSpellCritBaseStore; -extern DBCStorage <GtChanceToSpellCritEntry> sGtChanceToSpellCritStore; -extern DBCStorage <GtOCTRegenHPEntry> sGtOCTRegenHPStore; -//extern DBCStorage <GtOCTRegenMPEntry> sGtOCTRegenMPStore; -- not used currently -extern DBCStorage <GtRegenHPPerSptEntry> sGtRegenHPPerSptStore; -extern DBCStorage <GtRegenMPPerSptEntry> sGtRegenMPPerSptStore; -extern DBCStorage <ItemEntry> sItemStore; -//extern DBCStorage <ItemDisplayInfoEntry> sItemDisplayInfoStore; -- not used currently -extern DBCStorage <ItemExtendedCostEntry> sItemExtendedCostStore; -extern DBCStorage <ItemRandomPropertiesEntry> sItemRandomPropertiesStore; -extern DBCStorage <ItemRandomSuffixEntry> sItemRandomSuffixStore; -extern DBCStorage <ItemSetEntry> sItemSetStore; -extern DBCStorage <LockEntry> sLockStore; -extern DBCStorage <MailTemplateEntry> sMailTemplateStore; -extern DBCStorage <MapEntry> sMapStore; -extern DBCStorage <QuestSortEntry> sQuestSortStore; -extern DBCStorage <RandomPropertiesPointsEntry> sRandomPropertiesPointsStore; -extern DBCStorage <SkillLineEntry> sSkillLineStore; -extern DBCStorage <SkillLineAbilityEntry> sSkillLineAbilityStore; -extern DBCStorage <SoundEntriesEntry> sSoundEntriesStore; -extern DBCStorage <SpellCastTimesEntry> sSpellCastTimesStore; -extern DBCStorage <SpellDurationEntry> sSpellDurationStore; -extern DBCStorage <SpellFocusObjectEntry> sSpellFocusObjectStore; -extern DBCStorage <SpellItemEnchantmentEntry> sSpellItemEnchantmentStore; -extern DBCStorage <SpellItemEnchantmentConditionEntry> sSpellItemEnchantmentConditionStore; -extern SpellCategoryStore sSpellCategoryStore; -extern PetFamilySpellsStore sPetFamilySpellsStore; -extern DBCStorage <SpellRadiusEntry> sSpellRadiusStore; -extern DBCStorage <SpellRangeEntry> sSpellRangeStore; -extern DBCStorage <SpellShapeshiftEntry> sSpellShapeshiftStore; -extern DBCStorage <SpellEntry> sSpellStore; -extern DBCStorage <StableSlotPricesEntry> sStableSlotPricesStore; -extern DBCStorage <TalentEntry> sTalentStore; -extern DBCStorage <TalentTabEntry> sTalentTabStore; -extern DBCStorage <TaxiNodesEntry> sTaxiNodesStore; -extern DBCStorage <TaxiPathEntry> sTaxiPathStore; -extern TaxiMask sTaxiNodesMask; -extern TaxiPathSetBySource sTaxiPathSetBySource; -extern TaxiPathNodesByPath sTaxiPathNodesByPath; -extern DBCStorage <TotemCategoryEntry> sTotemCategoryStore; -//extern DBCStorage <WorldMapAreaEntry> sWorldMapAreaStore; -- use Zone2MapCoordinates and Map2ZoneCoordinates -extern DBCStorage <WorldSafeLocsEntry> sWorldSafeLocsStore; - -void LoadDBCStores(const std::string& dataPath); - -// script support functions -TRINITY_DLL_SPEC DBCStorage <SoundEntriesEntry> const* GetSoundEntriesStore(); -TRINITY_DLL_SPEC DBCStorage <SpellEntry> const* GetSpellStore(); -TRINITY_DLL_SPEC DBCStorage <SpellRangeEntry> const* GetSpellRangeStore(); -#endif - diff --git a/src/shared/Database/DBCStructure.h b/src/shared/Database/DBCStructure.h deleted file mode 100644 index 95703f9b778..00000000000 --- a/src/shared/Database/DBCStructure.h +++ /dev/null @@ -1,904 +0,0 @@ -/* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> - * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef DBCSTRUCTURE_H -#define DBCSTRUCTURE_H - -#include "DBCEnums.h" -#include "Platform/Define.h" - -#include <map> -#include <set> -#include <vector> - -// Structures using to access raw DBC data and required packing to portability - -// GCC have alternative #pragma pack(N) syntax and old gcc version not support pack(push,N), also any gcc version not support it at some platform -#if defined( __GNUC__ ) -#pragma pack(1) -#else -#pragma pack(push,1) -#endif - -struct AreaTableEntry -{ - uint32 ID; // 0 - uint32 mapid; // 1 - uint32 zone; // 2 if 0 then it's zone, else it's zone id of this area - uint32 exploreFlag; // 3, main index - uint32 flags; // 4, unknown value but 312 for all cities - // 5-9 unused - int32 area_level; // 10 - char* area_name[16]; // 11-26 - // 27, string flags, unused - uint32 team; // 28 -}; - -struct AreaTriggerEntry -{ - uint32 id; // 0 - uint32 mapid; // 1 - float x; // 2 - float y; // 3 - float z; // 4 - float radius; // 5 - float box_x; // 6 extent x edge - float box_y; // 7 extent y edge - float box_z; // 8 extent z edge - float box_orientation; // 9 extent rotation by about z axis -}; - -struct AuctionHouseEntry -{ - uint32 houseId; // 0 index - uint32 faction; // 1 id of faction.dbc for player factions associated with city - uint32 depositPercent; // 2 1/3 from real - uint32 cutPercent; // 3 - //char* name[16]; // 4-19 - // 20 string flag, unused -}; - -struct BankBagSlotPricesEntry -{ - uint32 ID; - uint32 price; -}; - -struct BattlemasterListEntry -{ - uint32 id; // 0 - uint32 mapid[3]; // 1-3 mapid - // 4-8 unused - uint32 type; // 9 (3 - BG, 4 - arena) - uint32 minlvl; // 10 - uint32 maxlvl; // 11 - uint32 maxplayersperteam; // 12 - // 13-14 unused - char* name[16]; // 15-30 - // 31 string flag, unused - // 32 unused -}; - -#define MAX_OUTFIT_ITEMS 12 -// #define MAX_OUTFIT_ITEMS 24 // 12->24 in 3.0.x - -struct CharStartOutfitEntry -{ - //uint32 Id; // 0 - uint32 RaceClassGender; // 1 (UNIT_FIELD_BYTES_0 & 0x00FFFFFF) comparable (0 byte = race, 1 byte = class, 2 byte = gender) - int32 ItemId[MAX_OUTFIT_ITEMS]; // 2-13 - //int32 ItemDisplayId[MAX_OUTFIT_ITEMS]; // 14-25 not required at server side - //int32 ItemInventorySlot[MAX_OUTFIT_ITEMS]; // 26-37 not required at server side - //uint32 Unknown1; // 38, unique values (index-like with gaps ordered in other way as ids) - //uint32 Unknown2; // 39 - //uint32 Unknown3; // 40 -}; - -struct CharTitlesEntry -{ - uint32 ID; // 0, title ids, for example in Quest::GetCharTitleId() - //uint32 unk1; // 1 flags? - //char* name[16]; // 2-17, unused - // 18 string flag, unused - //char* name2[16]; // 19-34, unused - // 35 string flag, unused - uint32 bit_index; // 36 used in PLAYER_CHOSEN_TITLE and 1<<index in PLAYER__FIELD_KNOWN_TITLES -}; - -struct ChatChannelsEntry -{ - uint32 ChannelID; // 0 - uint32 flags; // 1 - char* pattern[16]; // 3-18 - // 19 string flags, unused - //char* name[16]; // 20-35 unused - // 36 string flag, unused -}; - -struct ChrClassesEntry -{ - uint32 ClassID; // 0 - // 1-2, unused - uint32 powerType; // 3 - // 4, unused - //char* name[16]; // 5-20 unused - char* name[16]; // 5-20 unused - // 21 string flag, unused - //char* nameFemale[16]; // 21-36 unused, if different from base (male) case - // 37 string flag, unused - //char* nameNeutralGender[16]; // 38-53 unused, if different from base (male) case - // 54 string flag, unused - // 55, unused - uint32 spellfamily; // 56 - // 57, unused -}; - -struct ChrRacesEntry -{ - uint32 RaceID; // 0 - // 1 unused - uint32 FactionID; // 2 facton template id - // 3 unused - uint32 model_m; // 4 - uint32 model_f; // 5 - // 6-7 unused - uint32 TeamID; // 8 (7-Alliance 1-Horde) - // 9-12 unused - uint32 startmovie; // 13 id from CinematicCamera.dbc - char* name[16]; // 14-29 used for DBC language detection/selection - // 30 string flags, unused - //char* nameFemale[16]; // 31-46, if different from base (male) case - // 47 string flags, unused - //char* nameNeutralGender[16]; // 48-63, if different from base (male) case - // 64 string flags, unused - // 65-67 unused - uint32 addon; // 68 (0 - original race, 1 - tbc addon, ...) -}; - -struct CreatureDisplayInfoEntry -{ - uint32 Displayid; // 0 - // 1-3,unused - float scale; // 4 - // 5-13,unused -}; - -struct CreatureFamilyEntry -{ - uint32 ID; // 0 - float minScale; // 1 - uint32 minScaleLevel; // 2 0/1 - float maxScale; // 3 - uint32 maxScaleLevel; // 4 0/60 - uint32 skillLine[2]; // 5-6 - uint32 petFoodMask; // 7 - char* Name[16]; // 8-23 - // 24 string flags, unused - // 25 icon, unused -}; - -struct CreatureSpellDataEntry -{ - uint32 ID; // 0 - //uint32 spellId[4]; // 1-4 hunter pet learned spell (for later use) -}; - -struct DurabilityCostsEntry -{ - uint32 Itemlvl; // 0 - uint32 multiplier[29]; // 1-29 -}; - -struct DurabilityQualityEntry -{ - uint32 Id; // 0 - float quality_mod; // 1 -}; - -struct EmotesTextEntry -{ - uint32 Id; - uint32 textid; -}; - -struct FactionEntry -{ - uint32 ID; // 0 - int32 reputationListID; // 1 - uint32 BaseRepRaceMask[4]; // 2-5 Base reputation race masks (see enum Races) - uint32 BaseRepClassMask[4]; // 6-9 Base reputation class masks (see enum Classes) - int32 BaseRepValue[4]; // 10-13 Base reputation values - uint32 ReputationFlags[4]; // 14-17 Default flags to apply - uint32 team; // 18 enum Team - char* name[16]; // 19-34 - // 35 string flags, unused - //char* description[16]; // 36-51 unused - // 52 string flags, unused -}; - -struct FactionTemplateEntry -{ - uint32 ID; // 0 - uint32 faction; // 1 - uint32 factionFlags; // 2 specific flags for that faction - uint32 ourMask; // 3 if mask set (see FactionMasks) then faction included in masked team - uint32 friendlyMask; // 4 if mask set (see FactionMasks) then faction friendly to masked team - uint32 hostileMask; // 5 if mask set (see FactionMasks) then faction hostile to masked team - uint32 enemyFaction1; // 6 - uint32 enemyFaction2; // 7 - uint32 enemyFaction3; // 8 - uint32 enemyFaction4; // 9 - uint32 friendFaction1; // 10 - uint32 friendFaction2; // 11 - uint32 friendFaction3; // 12 - uint32 friendFaction4; // 13 - //------------------------------------------------------- end structure - - // helpers - bool IsFriendlyTo(FactionTemplateEntry const& entry) const - { - if(ID == entry.ID) - return true; - if(enemyFaction1 == entry.faction || enemyFaction2 == entry.faction || enemyFaction3 == entry.faction || enemyFaction4 == entry.faction ) - return false; - if(friendFaction1 == entry.faction || friendFaction2 == entry.faction || friendFaction3 == entry.faction || friendFaction4 == entry.faction ) - return true; - return (friendlyMask & entry.ourMask) || (ourMask & entry.friendlyMask); - } - bool IsHostileTo(FactionTemplateEntry const& entry) const - { - if(ID == entry.ID) - return false; - if(enemyFaction1 == entry.faction || enemyFaction2 == entry.faction || enemyFaction3 == entry.faction || enemyFaction4 == entry.faction ) - return true; - if(friendFaction1 == entry.faction || friendFaction2 == entry.faction || friendFaction3 == entry.faction || friendFaction4 == entry.faction ) - return false; - return (hostileMask & entry.ourMask) != 0; - } - bool IsHostileToPlayers() const { return (hostileMask & FACTION_MASK_PLAYER) !=0; } - bool IsNeutralToAll() const { return hostileMask == 0 && friendlyMask == 0 && enemyFaction1==0 && enemyFaction2==0 && enemyFaction3==0 && enemyFaction4==0; } - bool IsContestedGuardFaction() const { return (factionFlags & FACTION_TEMPLATE_FLAG_CONTESTED_GUARD)!=0; } -}; - -struct GemPropertiesEntry -{ - uint32 ID; - uint32 spellitemenchantement; - uint32 color; -}; - -// All Gt* DBC store data for 100 levels, some by 100 per class/race -#define GT_MAX_LEVEL 100 - -struct GtCombatRatingsEntry -{ - float ratio; -}; - -struct GtChanceToMeleeCritBaseEntry -{ - float base; -}; - -struct GtChanceToMeleeCritEntry -{ - float ratio; -}; - -struct GtChanceToSpellCritBaseEntry -{ - float base; -}; - -struct GtChanceToSpellCritEntry -{ - float ratio; -}; - -struct GtOCTRegenHPEntry -{ - float ratio; -}; - -//struct GtOCTRegenMPEntry -//{ -// float ratio; -//}; - -struct GtRegenHPPerSptEntry -{ - float ratio; -}; - -struct GtRegenMPPerSptEntry -{ - float ratio; -}; - -struct ItemEntry -{ - uint32 ID; - uint32 DisplayId; - uint32 InventoryType; - uint32 Sheath; -}; - -struct ItemDisplayInfoEntry -{ - uint32 ID; - uint32 randomPropertyChance; -}; - -//struct ItemCondExtCostsEntry -//{ -// uint32 ID; -// uint32 condExtendedCost; // ItemPrototype::CondExtendedCost -// uint32 itemextendedcostentry; // ItemPrototype::ExtendedCost -// uint32 arenaseason; // arena season number(1-4) -//}; - -struct ItemExtendedCostEntry -{ - uint32 ID; // 0 extended-cost entry id - uint32 reqhonorpoints; // 1 required honor points - uint32 reqarenapoints; // 2 required arena points - uint32 reqitem[5]; // 3-7 required item id - uint32 reqitemcount[5]; // 8-12 required count of 1st item - uint32 reqpersonalarenarating; // 13 required personal arena rating -}; - -struct ItemRandomPropertiesEntry -{ - uint32 ID; // 0 - //char* internalName // 1 unused - uint32 enchant_id[3]; // 2-4 - // 5-6 unused, 0 only values, reserved for additional enchantments? - //char* nameSuffix[16] // 7-22, unused - // 23 nameSufix flags, unused -}; - -struct ItemRandomSuffixEntry -{ - uint32 ID; // 0 - //char* name[16] // 1-16 unused - // 17, name flags, unused - // 18 unused - uint32 enchant_id[3]; // 19-21 - uint32 prefix[3]; // 22-24 -}; - -struct ItemSetEntry -{ - //uint32 id // 0 item set ID - char* name[16]; // 1-16 - // 17 string flags, unused - // 18-28 items from set, but not have all items listed, use ItemPrototype::ItemSet instead - // 29-34 unused - uint32 spells[8]; // 35-42 - uint32 items_to_triggerspell[8]; // 43-50 - uint32 required_skill_id; // 51 - uint32 required_skill_value; // 52 -}; - -struct LockEntry -{ - uint32 ID; // 0 - uint32 keytype[5]; // 1-5 - // 6-8, not used - uint32 key[5]; // 9-13 - // 14-16, not used - uint32 requiredminingskill; // 17 - uint32 requiredlockskill; // 18 - // 19-32, not used -}; - -struct MailTemplateEntry -{ - uint32 ID; // 0 - //char* subject[16]; // 1-16 - // 17 name flags, unused - //char* content[16]; // 18-33 -}; - -struct MapEntry -{ - uint32 MapID; // 0 - //char* internalname; // 1 unused - uint32 map_type; // 2 - // 3 unused - char* name[16]; // 4-19 - // 20 name flags, unused - // 21-23 unused (something PvPZone related - levels?) - // 24-26 - uint32 linked_zone; // 27 common zone for instance and continent map - //char* hordeIntro // 28-43 text for PvP Zones - // 44 intro text flags - //char* allianceIntro // 45-60 text for PvP Zones - // 46 intro text flags - // 47-61 not used - uint32 multimap_id; // 62 - // 63-65 not used - //chat* unknownText1 // 66-81 unknown empty text fields, possible normal Intro text. - // 82 text flags - //chat* heroicIntroText // 83-98 heroic mode requirement text - // 99 text flags - //chat* unknownText2 // 100-115 unknown empty text fields - // 116 text flags - int32 entrance_map; // 117 map_id of entrance map - float entrance_x; // 118 entrance x coordinate (if exist single entry) - float entrance_y; // 119 entrance y coordinate (if exist single entry) - uint32 resetTimeRaid; // 120 - uint32 resetTimeHeroic; // 121 - // 122-123 - uint32 addon; // 124 (0-original maps,1-tbc addon) - - // Helpers - uint32 Expansion() const { return addon; } - - - bool IsDungeon() const { return map_type == MAP_INSTANCE || map_type == MAP_RAID; } - bool Instanceable() const { return map_type == MAP_INSTANCE || map_type == MAP_RAID || map_type == MAP_BATTLEGROUND || map_type == MAP_ARENA; } - bool IsRaid() const { return map_type == MAP_RAID; } - bool IsBattleGround() const { return map_type == MAP_BATTLEGROUND; } - bool IsBattleArena() const { return map_type == MAP_ARENA; } - bool IsBattleGroundOrArena() const { return map_type == MAP_BATTLEGROUND || map_type == MAP_ARENA; } - bool SupportsHeroicMode() const { return resetTimeHeroic && !resetTimeRaid; } - bool HasResetTime() const { return resetTimeHeroic || resetTimeRaid; } - - bool IsMountAllowed() const - { - return !IsDungeon() || - MapID==568 || MapID==309 || MapID==209 || MapID==534 || - MapID==560 || MapID==509 || MapID==269; - } -}; - -struct QuestSortEntry -{ - uint32 id; // 0, sort id - //char* name[16]; // 1-16, unused - // 17 name flags, unused -}; - -struct RandomPropertiesPointsEntry -{ - //uint32 Id; // 0 hidden key - uint32 itemLevel; // 1 - uint32 EpicPropertiesPoints[5]; // 2-6 - uint32 RarePropertiesPoints[5]; // 7-11 - uint32 UncommonPropertiesPoints[5]; // 12-16 -}; - -//struct SkillLineCategoryEntry{ -// uint32 id; // 0 hidden key -// char* name[16]; // 1 - 17 Category name -// // 18 string flag -// uint32 displayOrder; // Display order in character tab -//}; - -//struct SkillRaceClassInfoEntry{ -// uint32 id; // 0 -// uint32 skillId; // 1 present some refrences to unknown skill -// uint32 raceMask; // 2 -// uint32 classMask; // 3 -// uint32 flags; // 4 mask for some thing -// uint32 reqLevel; // 5 -// uint32 skillTierId; // 6 -// uint32 skillCostID; // 7 -//}; - -//struct SkillTiersEntry{ -// uint32 id; // 0 -// uint32 skillValue[16]; // 1-17 unknown possibly add value on learn? -// uint32 maxSkillValue[16]; // Max value for rank -//}; - -struct SkillLineEntry -{ - uint32 id; // 0 - uint32 categoryId; // 1 (index from SkillLineCategory.dbc) - //uint32 skillCostID; // 2 not used - char* name[16]; // 3-18 - // 19 string flags, not used - //char* description[16]; // 20-35, not used - // 36 string flags, not used - uint32 spellIcon; // 37 -}; - -struct SkillLineAbilityEntry -{ - uint32 id; // 0, INDEX - uint32 skillId; // 1 - uint32 spellId; // 2 - uint32 racemask; // 3 - uint32 classmask; // 4 - //uint32 racemaskNot; // 5 always 0 in 2.4.2 - //uint32 classmaskNot; // 6 always 0 in 2.4.2 - uint32 req_skill_value; // 7 for trade skill.not for training. - uint32 forward_spellid; // 8 - uint32 learnOnGetSkill; // 9 can be 1 or 2 for spells learned on get skill - uint32 max_value; // 10 - uint32 min_value; // 11 - // 12-13, unknown, always 0 - uint32 reqtrainpoints; // 14 -}; - -struct SoundEntriesEntry -{ - uint32 Id; // 0, sound id - //uint32 Type; // 1, sound type (10 generally for creature, etc) - //char* InternalName; // 2, internal name, for use in lookup command for example - //char* FileName[10]; // 3-12, file names - //uint32 Unk13[10]; // 13-22, linked with file names? - //char* Path; // 23 - // 24-28, unknown -}; - -struct SpellEntry -{ - uint32 Id; // 0 normally counted from 0 field (but some tools start counting from 1, check this before tool use for data view!) - uint32 Category; // 1 - //uint32 castUI // 2 not used - uint32 Dispel; // 3 - uint32 Mechanic; // 4 - uint32 Attributes; // 5 - uint32 AttributesEx; // 6 - uint32 AttributesEx2; // 7 - uint32 AttributesEx3; // 8 - uint32 AttributesEx4; // 9 - uint32 AttributesEx5; // 10 - //uint32 AttributesEx6; // 11 not used - uint32 Stances; // 12 - uint32 StancesNot; // 13 - uint32 Targets; // 14 - uint32 TargetCreatureType; // 15 - uint32 RequiresSpellFocus; // 16 - uint32 FacingCasterFlags; // 17 - uint32 CasterAuraState; // 18 - uint32 TargetAuraState; // 19 - uint32 CasterAuraStateNot; // 20 - uint32 TargetAuraStateNot; // 21 - uint32 CastingTimeIndex; // 22 - uint32 RecoveryTime; // 23 - uint32 CategoryRecoveryTime; // 24 - uint32 InterruptFlags; // 25 - uint32 AuraInterruptFlags; // 26 - uint32 ChannelInterruptFlags; // 27 - uint32 procFlags; // 28 - uint32 procChance; // 29 - uint32 procCharges; // 30 - uint32 maxLevel; // 31 - uint32 baseLevel; // 32 - uint32 spellLevel; // 33 - uint32 DurationIndex; // 34 - uint32 powerType; // 35 - uint32 manaCost; // 36 - uint32 manaCostPerlevel; // 37 - uint32 manaPerSecond; // 38 - uint32 manaPerSecondPerLevel; // 39 - uint32 rangeIndex; // 40 - float speed; // 41 - //uint32 modalNextSpell; // 42 - uint32 StackAmount; // 43 - uint32 Totem[2]; // 44-45 - int32 Reagent[8]; // 46-53 - uint32 ReagentCount[8]; // 54-61 - int32 EquippedItemClass; // 62 (value) - int32 EquippedItemSubClassMask; // 63 (mask) - int32 EquippedItemInventoryTypeMask; // 64 (mask) - uint32 Effect[3]; // 65-67 - int32 EffectDieSides[3]; // 68-70 - uint32 EffectBaseDice[3]; // 71-73 - float EffectDicePerLevel[3]; // 74-76 - float EffectRealPointsPerLevel[3]; // 77-79 - int32 EffectBasePoints[3]; // 80-82 (don't must be used in spell/auras explicitly, must be used cached Spell::m_currentBasePoints) - uint32 EffectMechanic[3]; // 83-85 - uint32 EffectImplicitTargetA[3]; // 86-88 - uint32 EffectImplicitTargetB[3]; // 89-91 - uint32 EffectRadiusIndex[3]; // 92-94 - spellradius.dbc - uint32 EffectApplyAuraName[3]; // 95-97 - uint32 EffectAmplitude[3]; // 98-100 - float EffectMultipleValue[3]; // 101-103 - uint32 EffectChainTarget[3]; // 104-106 - uint32 EffectItemType[3]; // 107-109 - int32 EffectMiscValue[3]; // 110-112 - int32 EffectMiscValueB[3]; // 113-115 - uint32 EffectTriggerSpell[3]; // 116-118 - float EffectPointsPerComboPoint[3]; // 119-121 - uint32 SpellVisual; // 122 - // 123 not used - uint32 SpellIconID; // 124 - uint32 activeIconID; // 125 - //uint32 spellPriority; // 126 - char* SpellName[16]; // 127-142 - //uint32 SpellNameFlag; // 143 - char* Rank[16]; // 144-159 - //uint32 RankFlags; // 160 - //char* Description[16]; // 161-176 not used - //uint32 DescriptionFlags; // 177 not used - //char* ToolTip[16]; // 178-193 not used - //uint32 ToolTipFlags; // 194 not used - uint32 ManaCostPercentage; // 195 - uint32 StartRecoveryCategory; // 196 - uint32 StartRecoveryTime; // 197 - uint32 MaxTargetLevel; // 198 - uint32 SpellFamilyName; // 199 - uint64 SpellFamilyFlags; // 200+201 - uint32 MaxAffectedTargets; // 202 - uint32 DmgClass; // 203 defenseType - uint32 PreventionType; // 204 - //uint32 StanceBarOrder; // 205 not used - float DmgMultiplier[3]; // 206-208 - //uint32 MinFactionId; // 209 not used, and 0 in 2.4.2 - //uint32 MinReputation; // 210 not used, and 0 in 2.4.2 - //uint32 RequiredAuraVision; // 211 not used - uint32 TotemCategory[2]; // 212-213 - uint32 AreaId; // 214 - uint32 SchoolMask; // 215 school mask - - private: - // prevent creating custom entries (copy data from original in fact) - SpellEntry(SpellEntry const&); // DON'T must have implementation -}; - -typedef std::set<uint32> SpellCategorySet; -typedef std::map<uint32,SpellCategorySet > SpellCategoryStore; -typedef std::set<uint32> PetFamilySpellsSet; -typedef std::map<uint32,PetFamilySpellsSet > PetFamilySpellsStore; - -struct SpellCastTimesEntry -{ - uint32 ID; // 0 - int32 CastTime; // 1 - //float CastTimePerLevel; // 2 unsure / per skill? - //int32 MinCastTime; // 3 unsure -}; - -struct SpellFocusObjectEntry -{ - uint32 ID; // 0 - //char* Name[16]; // 1-15 unused - // 16 string flags, unused -}; - -// stored in SQL table -struct SpellThreatEntry -{ - uint32 spellId; - int32 threat; -}; - -struct SpellRadiusEntry -{ - uint32 ID; - float Radius; - float Radius2; -}; - -struct SpellRangeEntry -{ - uint32 ID; - float minRange; - float maxRange; - uint32 type; -}; - -struct SpellShapeshiftEntry -{ - uint32 ID; // 0 - //uint32 buttonPosition; // 1 unused - //char* Name[16]; // 2-17 unused - //uint32 NameFlags; // 18 unused - uint32 flags1; // 19 - int32 creatureType; // 20 <=0 humanoid, other normal creature types - //uint32 unk1; // 21 unused - uint32 attackSpeed; // 22 - //uint32 modelID; // 23 unused, alliance modelid (where horde case?) - //uint32 unk2; // 24 unused - //uint32 unk3; // 25 unused - //uint32 unk4; // 26 unused - //uint32 unk5; // 27 unused - //uint32 unk6; // 28 unused - //uint32 unk7; // 29 unused - //uint32 unk8; // 30 unused - //uint32 unk9; // 31 unused - //uint32 unk10; // 32 unused - //uint32 unk11; // 33 unused - //uint32 unk12; // 34 unused -}; - -struct SpellDurationEntry -{ - uint32 ID; - int32 Duration[3]; -}; - -struct SpellItemEnchantmentEntry -{ - uint32 ID; // 0 - uint32 type[3]; // 1-3 - uint32 amount[3]; // 4-6 - //uint32 amount2[3] // 7-9 always same as similar `amount` value - uint32 spellid[3]; // 10-12 - char* description[16]; // 13-29 - // 30 description flags - uint32 aura_id; // 31 - uint32 slot; // 32 - uint32 GemID; // 33 - uint32 EnchantmentCondition; // 34 -}; - -struct SpellItemEnchantmentConditionEntry -{ - uint32 ID; - uint8 Color[5]; - uint8 Comparator[5]; - uint8 CompareColor[5]; - uint32 Value[5]; -}; - -struct StableSlotPricesEntry -{ - uint32 Slot; - uint32 Price; -}; - -struct TalentEntry -{ - uint32 TalentID; // 0 - uint32 TalentTab; // 1 index in TalentTab.dbc (TalentTabEntry) - uint32 Row; // 2 - uint32 Col; // 3 - uint32 RankID[5]; // 4-8 - // 9-12 not used, always 0, maybe not used high ranks - uint32 DependsOn; // 13 index in Talent.dbc (TalentEntry) - // 14-15 not used - uint32 DependsOnRank; // 16 - // 17-19 not used - uint32 DependsOnSpell; // 20 req.spell -}; - -struct TalentTabEntry -{ - uint32 TalentTabID; // 0 - //char* name[16]; // 1-16, unused - //uint32 nameFlags; // 17, unused - //unit32 spellicon; // 18 - // 19 not used - uint32 ClassMask; // 20 - uint32 tabpage; // 21 - //char* internalname; // 22 -}; - -struct TaxiNodesEntry -{ - uint32 ID; // 0 - uint32 map_id; // 1 - float x; // 2 - float y; // 3 - float z; // 4 - //char* name[16]; // 5-21 - // 22 string flags, unused - uint32 horde_mount_type; // 23 - uint32 alliance_mount_type; // 24 -}; - -struct TaxiPathEntry -{ - uint32 ID; - uint32 from; - uint32 to; - uint32 price; -}; - -struct TaxiPathNodeEntry -{ - uint32 path; - uint32 index; - uint32 mapid; - float x; - float y; - float z; - uint32 actionFlag; - uint32 delay; -}; - -struct TotemCategoryEntry -{ - uint32 ID; // 0 - //char* name[16]; // 1-16 - // 17 string flags, unused - uint32 categoryType; // 18 (one for specialization) - uint32 categoryMask; // 19 (compatibility mask for same type: different for totems, compatible from high to low for rods) -}; - -struct WorldMapAreaEntry -{ - //uint32 ID; // 0 - uint32 map_id; // 1 - uint32 area_id; // 2 index (continent 0 areas ignored) - //char* internal_name // 3 - float y1; // 4 - float y2; // 5 - float x1; // 6 - float x2; // 7 - int32 virtual_map_id; // 8 -1 (map_id have correct map) other: virtual map where zone show (map_id - where zone in fact internally) -}; - -struct WorldSafeLocsEntry -{ - uint32 ID; // 0 - uint32 map_id; // 1 - float x; // 2 - float y; // 3 - float z; // 4 - //char* name[16] // 5-20 name, unused - // 21 name flags, unused -}; - -// GCC have alternative #pragma pack() syntax and old gcc version not support pack(pop), also any gcc version not support it at some platform -#if defined( __GNUC__ ) -#pragma pack() -#else -#pragma pack(pop) -#endif - -// Structures not used for casting to loaded DBC data and not required then packing -struct TalentSpellPos -{ - TalentSpellPos() : talent_id(0), rank(0) {} - TalentSpellPos(uint16 _talent_id, uint8 _rank) : talent_id(_talent_id), rank(_rank) {} - - uint16 talent_id; - uint8 rank; -}; - -typedef std::map<uint32,TalentSpellPos> TalentSpellPosMap; - -struct TaxiPathBySourceAndDestination -{ - TaxiPathBySourceAndDestination() : ID(0),price(0) {} - TaxiPathBySourceAndDestination(uint32 _id,uint32 _price) : ID(_id),price(_price) {} - - uint32 ID; - uint32 price; -}; -typedef std::map<uint32,TaxiPathBySourceAndDestination> TaxiPathSetForSource; -typedef std::map<uint32,TaxiPathSetForSource> TaxiPathSetBySource; - -struct TaxiPathNode -{ - TaxiPathNode() : mapid(0), x(0),y(0),z(0),actionFlag(0),delay(0) {} - TaxiPathNode(uint32 _mapid, float _x, float _y, float _z, uint32 _actionFlag, uint32 _delay) : mapid(_mapid), x(_x),y(_y),z(_z),actionFlag(_actionFlag),delay(_delay) {} - - uint32 mapid; - float x; - float y; - float z; - uint32 actionFlag; - uint32 delay; -}; -typedef std::vector<TaxiPathNode> TaxiPathNodeList; -typedef std::vector<TaxiPathNodeList> TaxiPathNodesByPath; - -#define TaxiMaskSize 16 -typedef uint32 TaxiMask[TaxiMaskSize]; -#endif - diff --git a/src/shared/Database/DBCfmt.cpp b/src/shared/Database/DBCfmt.cpp deleted file mode 100644 index 14cf6486933..00000000000 --- a/src/shared/Database/DBCfmt.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> - * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -const char AreaTableEntryfmt[]="iiinixxxxxissssssssssssssssxixxxxxx"; -const char AuctionHouseEntryfmt[]="niiixxxxxxxxxxxxxxxxx"; -const char AreaTriggerEntryfmt[]="niffffffff"; -const char BankBagSlotPricesEntryfmt[]="ni"; -const char BattlemasterListEntryfmt[]="niiixxxxxiiiixxssssssssssssssssxx"; -const char CharStartOutfitEntryfmt[]="diiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxx"; -// 3*12 new item fields in 3.0.x -//const char CharStartOutfitEntryfmt[]="diiiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; -const char CharTitlesEntryfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi"; -const char ChatChannelsEntryfmt[]="iixssssssssssssssssxxxxxxxxxxxxxxxxxx"; - // ChatChannelsEntryfmt, index not used (more compact store) -//const char ChrClassesEntryfmt[]="nxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxix"; -const char ChrClassesEntryfmt[]="nxixssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxix"; -const char ChrRacesEntryfmt[]="nxixiixxixxxxissssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi"; -const char CreatureDisplayInfofmt[]="nxxxfxxxxxxxxx"; -const char CreatureFamilyfmt[]="nfifiiiissssssssssssssssxx"; -const char CreatureSpellDatafmt[]="nxxxxxxxx"; -const char DurabilityCostsfmt[]="niiiiiiiiiiiiiiiiiiiiiiiiiiiii"; -const char DurabilityQualityfmt[]="nf"; -const char EmoteEntryfmt[]="nxixxxxxxxxxxxxxxxx"; -const char FactionEntryfmt[]="niiiiiiiiiiiiiiiiiissssssssssssssssxxxxxxxxxxxxxxxxxx"; -const char FactionTemplateEntryfmt[]="niiiiiiiiiiiii"; -const char GemPropertiesEntryfmt[]="nixxi"; -const char GtCombatRatingsfmt[]="f"; -const char GtChanceToMeleeCritBasefmt[]="f"; -const char GtChanceToMeleeCritfmt[]="f"; -const char GtChanceToSpellCritBasefmt[]="f"; -const char GtChanceToSpellCritfmt[]="f"; -const char GtOCTRegenHPfmt[]="f"; -//const char GtOCTRegenMPfmt[]="f"; -const char GtRegenHPPerSptfmt[]="f"; -const char GtRegenMPPerSptfmt[]="f"; -const char Itemfmt[]="niii"; -//const char ItemDisplayTemplateEntryfmt[]="nxxxxxxxxxxixxxxxxxxxxx"; -//const char ItemCondExtCostsEntryfmt[]="xiii"; -const char ItemExtendedCostEntryfmt[]="niiiiiiiiiiiii"; -const char ItemRandomPropertiesfmt[]="nxiiixxxxxxxxxxxxxxxxxxx"; -const char ItemRandomSuffixfmt[]="nxxxxxxxxxxxxxxxxxxiiiiii"; -const char ItemSetEntryfmt[]="dssssssssssssssssxxxxxxxxxxxxxxxxxxiiiiiiiiiiiiiiiiii"; -const char LockEntryfmt[]="niiiiixxxiiiiixxxiixxxxxxxxxxxxxx"; -const char MailTemplateEntryfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; -const char MapEntryfmt[]="nxixssssssssssssssssxxxxxxxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiffiixxi"; -const char QuestSortEntryfmt[]="nxxxxxxxxxxxxxxxxx"; -const char RandomPropertiesPointsfmt[]="niiiiiiiiiiiiiii"; -const char SkillLinefmt[]="nixssssssssssssssssxxxxxxxxxxxxxxxxxxi"; -const char SkillLineAbilityfmt[]="niiiixxiiiiixxi"; -const char SoundEntriesfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; -const char SpellCastTimefmt[]="nixx"; -const char SpellDurationfmt[]="niii"; -const char SpellEntryfmt[]="nixiiiiiiiixiiiiiiiiiiiiiiiiiiiiiiiiiiiiifxiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffffffiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiifffixiixssssssssssssssssxssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiiiiiiiiiixfffxxxiiii"; -const char SpellFocusObjectfmt[]="nxxxxxxxxxxxxxxxxx"; -const char SpellItemEnchantmentfmt[]="niiiiiixxxiiissssssssssssssssxiiii"; -const char SpellItemEnchantmentConditionfmt[]="nbbbbbxxxxxbbbbbbbbbbiiiiiXXXXX"; -const char SpellRadiusfmt[]="nfxf"; -const char SpellRangefmt[]="nffixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; -const char SpellShapeshiftfmt[]="nxxxxxxxxxxxxxxxxxxiixixxxxxxxxxxxx"; -const char StableSlotPricesfmt[] = "ni"; -const char TalentEntryfmt[]="niiiiiiiixxxxixxixxxi"; -const char TalentTabEntryfmt[]="nxxxxxxxxxxxxxxxxxxxiix"; -const char TaxiNodesEntryfmt[]="nifffxxxxxxxxxxxxxxxxxii"; -const char TaxiPathEntryfmt[]="niii"; -const char TaxiPathNodeEntryfmt[]="diiifffiixx"; -const char TotemCategoryEntryfmt[]="nxxxxxxxxxxxxxxxxxii"; -const char WorldMapAreaEntryfmt[]="xinxffffi"; -const char WorldSafeLocsEntryfmt[]="nifffxxxxxxxxxxxxxxxxx"; - diff --git a/src/shared/Database/Database.cpp b/src/shared/Database/Database.cpp index 7110fe44c54..07ece3b0cd9 100644 --- a/src/shared/Database/Database.cpp +++ b/src/shared/Database/Database.cpp @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/Database.h b/src/shared/Database/Database.h index c2ee9349979..92a1c991dcc 100644 --- a/src/shared/Database/Database.h +++ b/src/shared/Database/Database.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,7 +33,7 @@ class SqlQueryHolder; typedef UNORDERED_MAP<ZThread::ThreadImpl*, SqlTransaction*> TransactionQueues; typedef UNORDERED_MAP<ZThread::ThreadImpl*, SqlResultQueue*> QueryQueues; -#define MAX_QUERY_LEN 1024 +#define MAX_QUERY_LEN 32*1024 class TRINITY_DLL_SPEC Database { diff --git a/src/shared/Database/DatabaseEnv.h b/src/shared/Database/DatabaseEnv.h index 664459473af..1d3d735881c 100644 --- a/src/shared/Database/DatabaseEnv.h +++ b/src/shared/Database/DatabaseEnv.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,7 +25,6 @@ #include "Log.h" #include "Errors.h" -#include "Database/DBCStores.h" #include "Database/Field.h" #include "Database/QueryResult.h" @@ -40,10 +39,8 @@ typedef DatabasePostgre DatabaseType; #define _OFFSET_ "LIMIT 1 OFFSET %d" #else #include "Database/QueryResultMysql.h" -#include "Database/QueryResultSqlite.h" #include "Database/Database.h" #include "Database/DatabaseMysql.h" -#include "Database/DatabaseSqlite.h" typedef DatabaseMysql DatabaseType; #define _LIKE_ "LIKE" #define _TABLE_SIM_ "`" diff --git a/src/shared/Database/DatabaseImpl.h b/src/shared/Database/DatabaseImpl.h index 5ab4ec04a65..3d3c53f0873 100644 --- a/src/shared/Database/DatabaseImpl.h +++ b/src/shared/Database/DatabaseImpl.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/DatabaseMysql.cpp b/src/shared/Database/DatabaseMysql.cpp index 77a59a69c57..5dc02c0a738 100644 --- a/src/shared/Database/DatabaseMysql.cpp +++ b/src/shared/Database/DatabaseMysql.cpp @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/DatabaseMysql.h b/src/shared/Database/DatabaseMysql.h index 1826a08f2aa..2fa157e75a5 100644 --- a/src/shared/Database/DatabaseMysql.h +++ b/src/shared/Database/DatabaseMysql.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/DatabasePostgre.cpp b/src/shared/Database/DatabasePostgre.cpp index 25b5a58b863..79e1c87f5e3 100644 --- a/src/shared/Database/DatabasePostgre.cpp +++ b/src/shared/Database/DatabasePostgre.cpp @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -79,14 +79,14 @@ bool DatabasePostgre::Initialize(const char *infoString) Tokens::iterator iter; - std::string host, port_or_socket, user, password, database; + std::string host, port_or_socket_dir, user, password, database; iter = tokens.begin(); if(iter != tokens.end()) host = *iter++; if(iter != tokens.end()) - port_or_socket = *iter++; + port_or_socket_dir = *iter++; if(iter != tokens.end()) user = *iter++; if(iter != tokens.end()) @@ -94,7 +94,10 @@ bool DatabasePostgre::Initialize(const char *infoString) if(iter != tokens.end()) database = *iter++; - mPGconn = PQsetdbLogin(host.c_str(), port_or_socket.c_str(), NULL, NULL, database.c_str(), user.c_str(), password.c_str()); + if (host == ".") + mPGconn = PQsetdbLogin(NULL, port_or_socket_dir == "." ? NULL : port_or_socket_dir.c_str(), NULL, NULL, database.c_str(), user.c_str(), password.c_str()); + else + mPGconn = PQsetdbLogin(host.c_str(), port_or_socket_dir.c_str(), NULL, NULL, database.c_str(), user.c_str(), password.c_str()); /* check to see that the backend connection was successfully made */ if (PQstatus(mPGconn) != CONNECTION_OK) diff --git a/src/shared/Database/DatabasePostgre.h b/src/shared/Database/DatabasePostgre.h index 6dc0c509869..c7242add572 100644 --- a/src/shared/Database/DatabasePostgre.h +++ b/src/shared/Database/DatabasePostgre.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/DatabaseSqlite.cpp b/src/shared/Database/DatabaseSqlite.cpp deleted file mode 100644 index a7a4a2a9847..00000000000 --- a/src/shared/Database/DatabaseSqlite.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> - * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef DO_POSTGRESQL - -#include "DatabaseEnv.h" - -DatabaseSqlite::DatabaseSqlite() : Database(), mSqlite(0) -{ -} - -DatabaseSqlite::~DatabaseSqlite() -{ - if (mSqlite) - sqlite_close(mSqlite); -} - -bool DatabaseSqlite::Initialize(const char *infoString) -{ - if(!Database::Initialize(infoString)) - return false; - - char *errmsg; - - mSqlite = sqlite_open(infoString, 0, &errmsg); - - if (!mSqlite) - { - - if (errmsg) - sqlite_freemem(errmsg); - return false; - } - - return true; -} - -QueryResult* DatabaseSqlite::Query(const char *sql) -{ - char *errmsg; - - if (!mSqlite) - return 0; - - char **tableData; - int rowCount; - int fieldCount; - - sqlite_get_table(mSqlite, sql, &tableData, &rowCount, &fieldCount, &errmsg); - - if (!rowCount) - return 0; - - if (!tableData) - { - - if (errmsg) - sqlite_freemem(errmsg); - return 0; - } - - QueryResultSqlite *queryResult = new QueryResultSqlite(tableData, rowCount, fieldCount); - if(!queryResult) - { - - return 0; - } - - queryResult->NextRow(); - - return queryResult; -} - -bool DatabaseSqlite::Execute(const char *sql) -{ - char *errmsg; - - if (!mSqlite) - return false; - - if(sqlite_exec(mSqlite, sql, NULL, NULL, &errmsg) != SQLITE_OK) - return false; - - return true; -} -#endif - diff --git a/src/shared/Database/DatabaseSqlite.h b/src/shared/Database/DatabaseSqlite.h deleted file mode 100644 index 32d49d0124b..00000000000 --- a/src/shared/Database/DatabaseSqlite.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> - * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef DO_POSTGRESQL - -#ifndef _DATABASESQLITE_H -#define _DATABASESQLITE_H - -#include <sqlite/sqlite.h> - -class DatabaseSqlite : public Database -{ - public: - DatabaseSqlite(); - ~DatabaseSqlite(); - - bool Initialize(const char *infoString); - - QueryResult* Query(const char *sql); - bool Execute(const char *sql); - - operator bool () const { return mSqlite != NULL; } - - private: - sqlite *mSqlite; -}; -#endif -#endif - diff --git a/src/shared/Database/Field.cpp b/src/shared/Database/Field.cpp index a7817d9a630..9a1fbfa5178 100644 --- a/src/shared/Database/Field.cpp +++ b/src/shared/Database/Field.cpp @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/Field.h b/src/shared/Database/Field.h index 3e5f26376bb..da6a865c6f2 100644 --- a/src/shared/Database/Field.h +++ b/src/shared/Database/Field.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/Makefile.am b/src/shared/Database/Makefile.am new file mode 100644 index 00000000000..518ea4c98a3 --- /dev/null +++ b/src/shared/Database/Makefile.am @@ -0,0 +1,59 @@ +# Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> +# +# Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +## Process this file with automake to produce Makefile.in + +## Sub-directories to parse + +## CPP flags for includes, defines, etc. +AM_CPPFLAGS = $(TRINI_INCLUDES) -I$(top_builddir)/src/shared -I$(srcdir) -I$(srcdir)/../../../dep/include -I$(srcdir)/../../framework -I$(srcdir)/../../shared -I$(srcdir)/../../../dep/include/g3dlite + +## Build MaNGOS shared library and its parts as convenience library. +# All libraries will be convenience libraries. Might be changed to shared +# later. +noinst_LIBRARIES = libmangosdatabase.a + +libmangosdatabase_a_SOURCES = \ + DBCFileLoader.cpp \ + DBCFileLoader.h \ + DBCStore.h \ + Database.cpp \ + Database.h \ + DatabaseEnv.h \ + DatabaseImpl.h \ + DatabaseMysql.cpp \ + DatabasePostgre.cpp \ + DatabaseMysql.h \ + DatabasePostgre.h \ + DBCEnums.h \ + Field.cpp \ + Field.h \ + MySQLDelayThread.h \ + PGSQLDelayThread.h \ + QueryResult.h \ + QueryResultMysql.cpp \ + QueryResultMysql.h \ + QueryResultPostgre.cpp \ + QueryResultPostgre.h \ + SQLStorage.cpp \ + SQLStorage.h \ + SQLStorageImpl.h \ + SqlDelayThread.cpp \ + SqlDelayThread.h \ + SqlOperations.cpp \ + SqlOperations.h diff --git a/src/shared/Database/MySQLDelayThread.h b/src/shared/Database/MySQLDelayThread.h index 14cf1a64617..fcebe3fbd35 100644 --- a/src/shared/Database/MySQLDelayThread.h +++ b/src/shared/Database/MySQLDelayThread.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/PGSQLDelayThread.h b/src/shared/Database/PGSQLDelayThread.h index 19941464cca..8d219bd9c1e 100644 --- a/src/shared/Database/PGSQLDelayThread.h +++ b/src/shared/Database/PGSQLDelayThread.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/QueryResult.h b/src/shared/Database/QueryResult.h index 32e47c0959f..01da45ed281 100644 --- a/src/shared/Database/QueryResult.h +++ b/src/shared/Database/QueryResult.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/QueryResultMysql.cpp b/src/shared/Database/QueryResultMysql.cpp index d995b9f2473..5bc11ae308f 100644 --- a/src/shared/Database/QueryResultMysql.cpp +++ b/src/shared/Database/QueryResultMysql.cpp @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/QueryResultMysql.h b/src/shared/Database/QueryResultMysql.h index 3131bd4bbe4..06b1353c12e 100644 --- a/src/shared/Database/QueryResultMysql.h +++ b/src/shared/Database/QueryResultMysql.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/QueryResultPostgre.cpp b/src/shared/Database/QueryResultPostgre.cpp index def1b0061e5..500ca053885 100644 --- a/src/shared/Database/QueryResultPostgre.cpp +++ b/src/shared/Database/QueryResultPostgre.cpp @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/QueryResultPostgre.h b/src/shared/Database/QueryResultPostgre.h index 61311728f2d..30d69114dc6 100644 --- a/src/shared/Database/QueryResultPostgre.h +++ b/src/shared/Database/QueryResultPostgre.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/QueryResultSqlite.cpp b/src/shared/Database/QueryResultSqlite.cpp deleted file mode 100644 index a041232f600..00000000000 --- a/src/shared/Database/QueryResultSqlite.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> - * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef DO_POSTGRESQL - -#include "DatabaseEnv.h" - -QueryResultSqlite::QueryResultSqlite(char **tableData, uint32 rowCount, uint32 fieldCount) : -QueryResult(rowCount, fieldCount), mTableData(tableData), mTableIndex(0) -{ - mCurrentRow = new Field[mFieldCount]; - - for (uint32 i = 0; i < mFieldCount; i++) - { - mFieldNames[i] = mTableData[i]; - mCurrentRow[i].SetType(Field::DB_TYPE_UNKNOWN); - } -} - -QueryResultSqlite::~QueryResultSqlite() -{ - EndQuery(); -} - -bool QueryResultSqlite::NextRow() -{ - int startIndex; - uint32 i; - - if (!mTableData) - return false; - - if (mTableIndex >= mRowCount) - { - EndQuery(); - return false; - } - - startIndex = (mTableIndex + 1) * mFieldCount; - for (i = 0; i < mFieldCount; i++) - { - mCurrentRow[i].SetValue(mTableData[startIndex + i]); - } - - ++mTableIndex; - return true; -} - -void QueryResultSqlite::EndQuery() -{ - if (mCurrentRow) - { - delete [] mCurrentRow; - mCurrentRow = NULL; - } - if (mTableData) - { - sqlite_free_table(mTableData); - mTableData = NULL; - } -} - -enum Field::DataTypes QueryResultSqlite::ConvertNativeType(const char* sqliteType) const -{ - if (sqliteType) - { - switch (*sqliteType) - { - case 'S': - return Field::DB_TYPE_STRING; - case 'I': - return Field::DB_TYPE_INTEGER; - case 'F': - return Field::DB_TYPE_FLOAT; - default: - return Field::DB_TYPE_UNKNOWN; - }; - } - return Field::DB_TYPE_UNKNOWN; -} -#endif - diff --git a/src/shared/Database/QueryResultSqlite.h b/src/shared/Database/QueryResultSqlite.h deleted file mode 100644 index b2622f96707..00000000000 --- a/src/shared/Database/QueryResultSqlite.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> - * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef DO_POSTGRESQL - -#if !defined(QUERYRESULTSQLITE_H) -#define QUERYRESULTSQLITE_H - -#include <sqlite/sqlite.h> - -class QueryResultSqlite : public QueryResult -{ - public: - QueryResultSqlite(char **tableData, uint32 rowCount, uint32 fieldCount); - - ~QueryResultSqlite(); - - bool NextRow(); - - private: - enum Field::DataTypes ConvertNativeType(const char* sqliteType) const; - void EndQuery(); - - char **mTableData; - uint32 mTableIndex; -}; -#endif -#endif - diff --git a/src/shared/Database/SQLStorage.cpp b/src/shared/Database/SQLStorage.cpp index 0eeefbf10ca..8561afc4a33 100644 --- a/src/shared/Database/SQLStorage.cpp +++ b/src/shared/Database/SQLStorage.cpp @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,20 +27,20 @@ extern DatabasePostgre WorldDatabase; extern DatabaseMysql WorldDatabase; #endif -const char CreatureInfosrcfmt[]="iiiiiisssiiiiiiiiiiffiffiiiiiiiiiiiffiiiiiiiiiiiiiiiiiiisiilliiis"; -const char CreatureInfodstfmt[]="iiiiiisssiiiiiiiiiiffiffiiiiiiiiiiiffiiiiiiiiiiiiiiiiiiisiilliiii"; +const char CreatureInfosrcfmt[]="iiiiiisssiiiiiiiiiiffiffiiiiiiiiiiiffiiiiiiiiiiiiiiiiiiiiiiiisiifflliiis"; +const char CreatureInfodstfmt[]="iiiiiisssiiiiiiiiiiffiffiiiiiiiiiiiffiiiiiiiiiiiiiiiiiiiiiiiisiifflliiii"; const char CreatureDataAddonInfofmt[]="iiiiiiiis"; const char CreatureModelfmt[]="iffbi"; const char CreatureInfoAddonInfofmt[]="iiiiiiiis"; -const char EquipmentInfofmt[]="iiiiiiiiii"; -const char GameObjectInfosrcfmt[]="iiissiifiiiiiiiiiiiiiiiiiiiiiiiis"; -const char GameObjectInfodstfmt[]="iiissiifiiiiiiiiiiiiiiiiiiiiiiiii"; -const char ItemPrototypesrcfmt[]="iiiisiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiffiffiffiiiiiiiiiifiiifiiiiiifiiiiiifiiiiiifiiiiiifiiiisiiiiiiiiiiiiiiiiiiiiiiiiifsiiiii"; -const char ItemPrototypedstfmt[]="iiiisiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiffiffiffiiiiiiiiiifiiifiiiiiifiiiiiifiiiiiifiiiiiifiiiisiiiiiiiiiiiiiiiiiiiiiiiiifiiiiii"; +const char EquipmentInfofmt[]="iiii"; +const char GameObjectInfosrcfmt[]="iiisssiifiiiiiiiiiiiiiiiiiiiiiiiis"; +const char GameObjectInfodstfmt[]="iiisssiifiiiiiiiiiiiiiiiiiiiiiiiii"; +const char ItemPrototypesrcfmt[]="iiiisiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiffiffiffiiiiiiiiiifiiifiiiiiifiiiiiifiiiiiifiiiiiifiiiisiiiiiiiiiiiiiiiiiiiiiiiiifiisiiii"; +const char ItemPrototypedstfmt[]="iiiisiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiffiffiffiiiiiiiiiifiiifiiiiiifiiiiiifiiiiiifiiiiiifiiiisiiiiiiiiiiiiiiiiiiiiiiiiifiiiiiii"; const char PageTextfmt[]="isi"; const char SpellThreatfmt[]="ii"; -const char InstanceTemplatesrcfmt[]="iiiiiffffs"; -const char InstanceTemplatedstfmt[]="iiiiiffffi"; +const char InstanceTemplatesrcfmt[]="iiiiiiffffs"; +const char InstanceTemplatedstfmt[]="iiiiiiffffi"; SQLStorage sCreatureStorage(CreatureInfosrcfmt, CreatureInfodstfmt, "entry","creature_template"); SQLStorage sCreatureDataAddonStorage(CreatureDataAddonInfofmt,"guid","creature_addon"); diff --git a/src/shared/Database/SQLStorage.h b/src/shared/Database/SQLStorage.h index 43e34532607..1b5b9d5dcf1 100644 --- a/src/shared/Database/SQLStorage.h +++ b/src/shared/Database/SQLStorage.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/SQLStorageImpl.h b/src/shared/Database/SQLStorageImpl.h index 82ff0beb60e..b511bdad68c 100644 --- a/src/shared/Database/SQLStorageImpl.h +++ b/src/shared/Database/SQLStorageImpl.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://getmangos.com/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,17 +18,17 @@ #include "ProgressBar.h" #include "Log.h" -#include "dbcfile.h" +#include "DBCFileLoader.h" template<class T> template<class S, class D> -void SQLStorageLoaderBase<T>::convert(uint32 field_pos, S src, D &dst) +void SQLStorageLoaderBase<T>::convert(uint32 /*field_pos*/, S src, D &dst) { dst = D(src); } template<class T> -void SQLStorageLoaderBase<T>::convert_str_to_str(uint32 field_pos, char *src, char *&dst) +void SQLStorageLoaderBase<T>::convert_str_to_str(uint32 /*field_pos*/, char *src, char *&dst) { if(!src) { @@ -45,7 +45,7 @@ void SQLStorageLoaderBase<T>::convert_str_to_str(uint32 field_pos, char *src, ch template<class T> template<class S> -void SQLStorageLoaderBase<T>::convert_to_str(uint32 field_pos, S src, char * & dst) +void SQLStorageLoaderBase<T>::convert_to_str(uint32 /*field_pos*/, S /*src*/, char * & dst) { dst = new char[1]; *dst = 0; @@ -53,7 +53,7 @@ void SQLStorageLoaderBase<T>::convert_to_str(uint32 field_pos, S src, char * & d template<class T> template<class D> -void SQLStorageLoaderBase<T>::convert_from_str(uint32 field_pos, char * src, D& dst) +void SQLStorageLoaderBase<T>::convert_from_str(uint32 /*field_pos*/, char * /*src*/, D& dst) { dst = 0; } diff --git a/src/shared/Database/SqlDelayThread.cpp b/src/shared/Database/SqlDelayThread.cpp index 16d5146fc53..27f58510a0a 100644 --- a/src/shared/Database/SqlDelayThread.cpp +++ b/src/shared/Database/SqlDelayThread.cpp @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/shared/Database/SqlDelayThread.h b/src/shared/Database/SqlDelayThread.h index 4c77c122f1e..cbae0c1e5eb 100644 --- a/src/shared/Database/SqlDelayThread.h +++ b/src/shared/Database/SqlDelayThread.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,7 +42,7 @@ class SqlDelayThread : public ZThread::Runnable SqlDelayThread(Database* db); ///< Put sql statement to delay queue - inline bool Delay(SqlOperation* sql) { m_sqlQueue.add(sql); return true; } + bool Delay(SqlOperation* sql) { m_sqlQueue.add(sql); return true; } virtual void Stop(); ///< Stop event virtual void run(); ///< Main Thread loop diff --git a/src/shared/Database/SqlOperations.cpp b/src/shared/Database/SqlOperations.cpp index c11c5b9269d..53b99359c09 100644 --- a/src/shared/Database/SqlOperations.cpp +++ b/src/shared/Database/SqlOperations.cpp @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -97,7 +97,7 @@ bool SqlQueryHolder::SetQuery(size_t index, const char *sql) { if(m_queries.size() <= index) { - sLog.outError("Query index (%u) out of range (size: %u) for query: %s",index,m_queries.size(),sql); + sLog.outError("Query index (%u) out of range (size: %u) for query: %s",index,(uint32)m_queries.size(),sql); return false; } diff --git a/src/shared/Database/SqlOperations.h b/src/shared/Database/SqlOperations.h index 1a0d3c78d1b..61eef4bb7c4 100644 --- a/src/shared/Database/SqlOperations.h +++ b/src/shared/Database/SqlOperations.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/> + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * - * Copyright (C) 2008 Trinity <http://www.trinitycore.org/> + * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by |