diff --git a/src/db/Db.cpp b/src/db/Db.cpp index f1a346f..e07b49f 100644 --- a/src/db/Db.cpp +++ b/src/db/Db.cpp @@ -2,6 +2,7 @@ #include "db/WowClientDB_Base.hpp" WowClientDB g_achievementDB; +WowClientDB g_areaTableDB; WowClientDB g_cfg_CategoriesDB; WowClientDB g_cfg_ConfigsDB; WowClientDB g_chrClassesDB; @@ -14,6 +15,7 @@ void LoadDB(WowClientDB_Base* db, const char* filename, int32_t linenumber) { void StaticDBLoadAll(void (*loadFn)(WowClientDB_Base*, const char*, int32_t)) { loadFn(&g_achievementDB, __FILE__, __LINE__); + loadFn(&g_areaTableDB, __FILE__, __LINE__); loadFn(&g_cfg_CategoriesDB, __FILE__, __LINE__); loadFn(&g_cfg_ConfigsDB, __FILE__, __LINE__); loadFn(&g_chrClassesDB, __FILE__, __LINE__); diff --git a/src/db/Db.hpp b/src/db/Db.hpp index 30265d8..44ea6f4 100644 --- a/src/db/Db.hpp +++ b/src/db/Db.hpp @@ -3,6 +3,7 @@ #include "db/WowClientDB.hpp" #include "db/rec/AchievementRec.hpp" +#include "db/rec/AreaTableRec.hpp" #include "db/rec/Cfg_CategoriesRec.hpp" #include "db/rec/Cfg_ConfigsRec.hpp" #include "db/rec/ChrClassesRec.hpp" @@ -10,6 +11,7 @@ #include "db/rec/MapRec.hpp" extern WowClientDB g_achievementDB; +extern WowClientDB g_areaTableDB; extern WowClientDB g_cfg_CategoriesDB; extern WowClientDB g_cfg_ConfigsDB; extern WowClientDB g_chrClassesDB; diff --git a/src/db/rec/AreaTableRec.cpp b/src/db/rec/AreaTableRec.cpp new file mode 100644 index 0000000..ada5507 --- /dev/null +++ b/src/db/rec/AreaTableRec.cpp @@ -0,0 +1,82 @@ +// DO NOT EDIT: generated by whoa-autocode +#include "db/rec/AreaTableRec.hpp" +#include "util/Locale.hpp" +#include "util/SFile.hpp" + +const char* AreaTableRec::GetFilename() { + return "DBFilesClient\\AreaTable.dbc"; +} + +uint32_t AreaTableRec::GetNumColumns() { + return 36; +} + +uint32_t AreaTableRec::GetRowSize() { + return 144; +} + +bool AreaTableRec::NeedIDAssigned() { + return false; +} + +int32_t AreaTableRec::GetID() { + return this->m_ID; +} + +void AreaTableRec::SetID(int32_t id) { + this->m_ID = id; +} + +bool AreaTableRec::Read(SFile* f, const char* stringBuffer) { + uint32_t areaNameOfs[16]; + uint32_t areaNameMask; + + if ( + !SFile::Read(f, &this->m_ID, sizeof(this->m_ID), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_continentID, sizeof(this->m_continentID), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_parentAreaID, sizeof(this->m_parentAreaID), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_areaBit, sizeof(this->m_areaBit), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_flags, sizeof(this->m_flags), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_soundProviderPref, sizeof(this->m_soundProviderPref), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_soundProviderPrefUnderwater, sizeof(this->m_soundProviderPrefUnderwater), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_ambienceID, sizeof(this->m_ambienceID), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_zoneMusic, sizeof(this->m_zoneMusic), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_introSound, sizeof(this->m_introSound), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_explorationLevel, sizeof(this->m_explorationLevel), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[0], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[1], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[2], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[3], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[4], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[5], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[6], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[7], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[8], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[9], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[10], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[11], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[12], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[13], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[14], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameOfs[15], sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &areaNameMask, sizeof(uint32_t), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_factionGroupMask, sizeof(this->m_factionGroupMask), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_liquidTypeID[0], sizeof(m_liquidTypeID[0]), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_liquidTypeID[1], sizeof(m_liquidTypeID[0]), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_liquidTypeID[2], sizeof(m_liquidTypeID[0]), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_liquidTypeID[3], sizeof(m_liquidTypeID[0]), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_minElevation, sizeof(this->m_minElevation), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_ambientMultiplier, sizeof(this->m_ambientMultiplier), nullptr, nullptr, nullptr) + || !SFile::Read(f, &this->m_lightID, sizeof(this->m_lightID), nullptr, nullptr, nullptr) + ) { + return false; + } + + if (stringBuffer) { + this->m_areaName = &stringBuffer[areaNameOfs[CURRENT_LANGUAGE]]; + } else { + this->m_areaName = ""; + } + + return true; +} diff --git a/src/db/rec/AreaTableRec.hpp b/src/db/rec/AreaTableRec.hpp new file mode 100644 index 0000000..6c03006 --- /dev/null +++ b/src/db/rec/AreaTableRec.hpp @@ -0,0 +1,38 @@ +// DO NOT EDIT: generated by whoa-autocode +#ifndef DB_REC_AREA_TABLE_REC_HPP +#define DB_REC_AREA_TABLE_REC_HPP + +#include + +class SFile; + +class AreaTableRec { + public: + int32_t m_ID; + int32_t m_continentID; + int32_t m_parentAreaID; + int32_t m_areaBit; + int32_t m_flags; + int32_t m_soundProviderPref; + int32_t m_soundProviderPrefUnderwater; + int32_t m_ambienceID; + int32_t m_zoneMusic; + int32_t m_introSound; + int32_t m_explorationLevel; + const char* m_areaName; + int32_t m_factionGroupMask; + int32_t m_liquidTypeID[4]; + float m_minElevation; + float m_ambientMultiplier; + int32_t m_lightID; + + static const char* GetFilename(); + static uint32_t GetNumColumns(); + static uint32_t GetRowSize(); + static bool NeedIDAssigned(); + int32_t GetID(); + void SetID(int32_t id); + bool Read(SFile* f, const char* stringBuffer); +}; + +#endif