diff --git a/src/world/map/CMap.cpp b/src/world/map/CMap.cpp index 3eb3e71..d58ef54 100644 --- a/src/world/map/CMap.cpp +++ b/src/world/map/CMap.cpp @@ -32,6 +32,26 @@ char CMap::s_mapName[256]; char CMap::s_mapPath[256]; char CMap::s_wdtFilename[256]; +CMapEntity* CMap::AllocEntity(int32_t a1) { + CMapEntity* entity; + uint32_t memHandle; + void* mem = nullptr; + + if (ObjectAlloc(*CMap::s_entityHeap, &memHandle, &mem, false)) { + entity = new (mem) CMapEntity(); + } else { + entity = nullptr; + } + + if (a1) { + CMap::s_entityList.LinkToHead(entity); + } else { + CMap::s_entityList.LinkToTail(entity); + } + + return entity; +} + void CMap::Initialize() { // TODO diff --git a/src/world/map/CMap.hpp b/src/world/map/CMap.hpp index 27e7c39..902d24f 100644 --- a/src/world/map/CMap.hpp +++ b/src/world/map/CMap.hpp @@ -5,6 +5,8 @@ #include #include +class CMapEntity; + class CMap { public: // Static variables @@ -27,6 +29,7 @@ class CMap { static char s_wdtFilename[]; // Static functions + static CMapEntity* AllocEntity(int32_t a1); static void Initialize(); static void Load(const char* mapName, int32_t zoneID); static void MapMemInitialize();