diff --git a/src/glue/CGlueMgr.cpp b/src/glue/CGlueMgr.cpp index 2ad969d..292a99e 100644 --- a/src/glue/CGlueMgr.cpp +++ b/src/glue/CGlueMgr.cpp @@ -243,8 +243,7 @@ void CGlueMgr::Initialize() { CGlueMgr::Resume(); - // TODO - // CRealmList::Initialize(); + CRealmList::Initialize(); EventRegisterEx(EVENT_ID_IDLE, &CGlueMgr::Idle, 0, 0.0); diff --git a/src/glue/CMakeLists.txt b/src/glue/CMakeLists.txt index c4f5115..264ea69 100644 --- a/src/glue/CMakeLists.txt +++ b/src/glue/CMakeLists.txt @@ -12,6 +12,7 @@ target_include_directories(glue target_link_libraries(glue PRIVATE client + db event gx net diff --git a/src/glue/CRealmList.cpp b/src/glue/CRealmList.cpp index 749cb05..fd5ac25 100644 --- a/src/glue/CRealmList.cpp +++ b/src/glue/CRealmList.cpp @@ -1,4 +1,23 @@ #include "glue/CRealmList.hpp" +#include "db/Db.hpp" +#include + +TSFixedArray CRealmList::s_categories; + +void CRealmList::Initialize() { + CRealmList::s_categories.SetCount(g_cfg_CategoriesDB.m_numRecords); + + for (int32_t i = 0; i < g_cfg_CategoriesDB.m_numRecords; i++) { + auto m = SMemAlloc(sizeof(RealmCategory), __FILE__, __LINE__, 0x0); + auto category = new (m) RealmCategory(); + + CRealmList::s_categories[i] = category; + CRealmList::s_categories[i]->m_category = g_cfg_CategoriesDB.GetRecordByIndex(i); + CRealmList::s_categories[i]->uint14 = 0; + } + + // TODO Initialize CRealmList::s_sortCriteria +} void CRealmList::UpdateList() { // TODO diff --git a/src/glue/CRealmList.hpp b/src/glue/CRealmList.hpp index d741070..fe2a992 100644 --- a/src/glue/CRealmList.hpp +++ b/src/glue/CRealmList.hpp @@ -1,9 +1,24 @@ #ifndef GLUE_C_REALM_LIST_HPP #define GLUE_C_REALM_LIST_HPP +#include +#include + +class Cfg_CategoriesRec; + +struct RealmCategory { + Cfg_CategoriesRec* m_category; + TSGrowableArray m_realms; + uint32_t uint14; +}; + class CRealmList { public: + // Static variables + static TSFixedArray s_categories; + // Static functions + static void Initialize(); static void UpdateList(); };