diff --git a/src/world/CWorld.cpp b/src/world/CWorld.cpp index 5f0fc45..fbe55a3 100644 --- a/src/world/CWorld.cpp +++ b/src/world/CWorld.cpp @@ -88,6 +88,10 @@ void CWorld::Initialize() { // TODO + CMap::Initialize(); + + // TODO + CWorld::s_weather = STORM_NEW(Weather); // TODO diff --git a/src/world/map/CChunkLiquid.hpp b/src/world/map/CChunkLiquid.hpp new file mode 100644 index 0000000..099266d --- /dev/null +++ b/src/world/map/CChunkLiquid.hpp @@ -0,0 +1,9 @@ +#ifndef WORLD_MAP_C_CHUNK_LIQUID_HPP +#define WORLD_MAP_C_CHUNK_LIQUID_HPP + +class CChunkLiquid { + public: + // TODO +}; + +#endif diff --git a/src/world/map/CMap.cpp b/src/world/map/CMap.cpp index 32c0234..3eb3e71 100644 --- a/src/world/map/CMap.cpp +++ b/src/world/map/CMap.cpp @@ -1,11 +1,45 @@ #include "world/map/CMap.hpp" +#include "world/map/CChunkLiquid.hpp" +#include "world/map/CMapArea.hpp" +#include "world/map/CMapAreaLow.hpp" +#include "world/map/CMapCacheLight.hpp" +#include "world/map/CMapChunk.hpp" +#include "world/map/CMapDoodadDef.hpp" +#include "world/map/CMapEntity.hpp" +#include "world/map/CMapLight.hpp" +#include "world/map/CMapObj.hpp" +#include "world/map/CMapObjDef.hpp" +#include "world/map/CMapObjDefGroup.hpp" +#include "world/map/CMapObjGroup.hpp" +#include #include +uint32_t* CMap::s_areaHeap; +uint32_t* CMap::s_areaLowHeap; +uint32_t* CMap::s_baseObjLinkHeap; +uint32_t* CMap::s_cacheLightHeap; +uint32_t* CMap::s_chunkHeap; +uint32_t* CMap::s_chunkLiquidHeap; +uint32_t* CMap::s_doodadDefHeap; +uint32_t* CMap::s_entityHeap; STORM_EXPLICIT_LIST(CMapBaseObj, m_lameAssLink) CMap::s_entityList; +uint32_t* CMap::s_lightHeap; +uint32_t* CMap::s_mapObjDefGroupHeap; +uint32_t* CMap::s_mapObjDefHeap; +uint32_t* CMap::s_mapObjGroupHeap; +uint32_t* CMap::s_mapObjHeap; char CMap::s_mapName[256]; char CMap::s_mapPath[256]; char CMap::s_wdtFilename[256]; +void CMap::Initialize() { + // TODO + + CMap::MapMemInitialize(); + + // TODO +} + void CMap::Load(const char* mapName, int32_t zoneID) { // TODO @@ -18,3 +52,20 @@ void CMap::Load(const char* mapName, int32_t zoneID) { // TODO } + +void CMap::MapMemInitialize() { + CMap::s_lightHeap = STORM_NEW(uint32_t)(ObjectAllocAddHeap(sizeof(CMapLight), 128, "WLIGHT", true)); + CMap::s_cacheLightHeap = STORM_NEW(uint32_t)(ObjectAllocAddHeap(sizeof(CMapCacheLight), 256, "WCACHELIGHT", true)); + CMap::s_mapObjGroupHeap = STORM_NEW(uint32_t)(ObjectAllocAddHeap(sizeof(CMapObjGroup), 128, "WMAPOBJGROUP", true)); + CMap::s_mapObjHeap = STORM_NEW(uint32_t)(ObjectAllocAddHeap(sizeof(CMapObj), 32, "WMAPOBJ", true)); + CMap::s_baseObjLinkHeap = STORM_NEW(uint32_t)(ObjectAllocAddHeap(sizeof(CMapBaseObjLink), 10000, "WBASEOBJLINK", true)); + CMap::s_areaHeap = STORM_NEW(uint32_t)(ObjectAllocAddHeap(sizeof(CMapArea), 16, "WAREA", true)); + // CMap::s_areaMedHeap = STORM_NEW(uint32_t)(ObjectAllocAddHeap(sizeof(CMapAreaMed), 16, "WAREAMED", true)); ?? + CMap::s_areaLowHeap = STORM_NEW(uint32_t)(ObjectAllocAddHeap(sizeof(CMapAreaLow), 16, "WAREALOW", true)); + CMap::s_chunkHeap = STORM_NEW(uint32_t)(ObjectAllocAddHeap(sizeof(CMapChunk), 256, "WCHUNK", true)); + CMap::s_doodadDefHeap = STORM_NEW(uint32_t)(ObjectAllocAddHeap(sizeof(CMapDoodadDef), 5000, "WDOODADDEF", true)); + CMap::s_entityHeap = STORM_NEW(uint32_t)(ObjectAllocAddHeap(sizeof(CMapEntity), 128, "WENTITY", true)); + CMap::s_mapObjDefGroupHeap = STORM_NEW(uint32_t)(ObjectAllocAddHeap(sizeof(CMapObjDefGroup), 128, "WMAPOBJDEFGROUP", true)); + CMap::s_mapObjDefHeap = STORM_NEW(uint32_t)(ObjectAllocAddHeap(sizeof(CMapObjDef), 64, "WMAPOBJDEF", true)); + CMap::s_chunkLiquidHeap = STORM_NEW(uint32_t)(ObjectAllocAddHeap(sizeof(CChunkLiquid), 64, "WCHUNKLIQUID", true)); +} diff --git a/src/world/map/CMap.hpp b/src/world/map/CMap.hpp index 3407f37..27e7c39 100644 --- a/src/world/map/CMap.hpp +++ b/src/world/map/CMap.hpp @@ -8,13 +8,28 @@ class CMap { public: // Static variables + static uint32_t* s_areaHeap; + static uint32_t* s_areaLowHeap; + static uint32_t* s_baseObjLinkHeap; + static uint32_t* s_cacheLightHeap; + static uint32_t* s_chunkHeap; + static uint32_t* s_chunkLiquidHeap; + static uint32_t* s_doodadDefHeap; + static uint32_t* s_entityHeap; static STORM_EXPLICIT_LIST(CMapBaseObj, m_lameAssLink) s_entityList; + static uint32_t* s_lightHeap; + static uint32_t* s_mapObjDefGroupHeap; + static uint32_t* s_mapObjDefHeap; + static uint32_t* s_mapObjGroupHeap; + static uint32_t* s_mapObjHeap; static char s_mapName[]; static char s_mapPath[]; static char s_wdtFilename[]; // Static functions + static void Initialize(); static void Load(const char* mapName, int32_t zoneID); + static void MapMemInitialize(); }; #endif diff --git a/src/world/map/CMapArea.hpp b/src/world/map/CMapArea.hpp new file mode 100644 index 0000000..95d87ba --- /dev/null +++ b/src/world/map/CMapArea.hpp @@ -0,0 +1,11 @@ +#ifndef WORLD_MAP_C_MAP_AREA_HPP +#define WORLD_MAP_C_MAP_AREA_HPP + +#include "world/map/CMapBaseObj.hpp" + +class CMapArea : public CMapBaseObj { + public: + // TODO +}; + +#endif diff --git a/src/world/map/CMapAreaLow.hpp b/src/world/map/CMapAreaLow.hpp new file mode 100644 index 0000000..0eb3802 --- /dev/null +++ b/src/world/map/CMapAreaLow.hpp @@ -0,0 +1,9 @@ +#ifndef WORLD_MAP_C_MAP_AREA_LOW_HPP +#define WORLD_MAP_C_MAP_AREA_LOW_HPP + +class CMapAreaLow { + public: + // TODO +}; + +#endif diff --git a/src/world/map/CMapCacheLight.hpp b/src/world/map/CMapCacheLight.hpp new file mode 100644 index 0000000..e2d82ac --- /dev/null +++ b/src/world/map/CMapCacheLight.hpp @@ -0,0 +1,9 @@ +#ifndef WORLD_MAP_C_MAP_CACHE_LIGHT_HPP +#define WORLD_MAP_C_MAP_CACHE_LIGHT_HPP + +class CMapCacheLight { + public: + // TODO +}; + +#endif diff --git a/src/world/map/CMapChunk.hpp b/src/world/map/CMapChunk.hpp new file mode 100644 index 0000000..15ed5ca --- /dev/null +++ b/src/world/map/CMapChunk.hpp @@ -0,0 +1,11 @@ +#ifndef WORLD_MAP_C_MAP_CHUNK_HPP +#define WORLD_MAP_C_MAP_CHUNK_HPP + +#include "world/map/CMapBaseObj.hpp" + +class CMapChunk : public CMapBaseObj { + public: + // TODO +}; + +#endif diff --git a/src/world/map/CMapDoodadDef.hpp b/src/world/map/CMapDoodadDef.hpp new file mode 100644 index 0000000..aa3d321 --- /dev/null +++ b/src/world/map/CMapDoodadDef.hpp @@ -0,0 +1,11 @@ +#ifndef WORLD_MAP_C_MAP_DOODAD_DEF_HPP +#define WORLD_MAP_C_MAP_DOODAD_DEF_HPP + +#include "world/map/CMapStaticEntity.hpp" + +class CMapDoodadDef : public CMapStaticEntity { + public: + // TODO +}; + +#endif diff --git a/src/world/map/CMapLight.hpp b/src/world/map/CMapLight.hpp new file mode 100644 index 0000000..577d866 --- /dev/null +++ b/src/world/map/CMapLight.hpp @@ -0,0 +1,11 @@ +#ifndef WORLD_MAP_C_MAP_LIGHT_HPP +#define WORLD_MAP_C_MAP_LIGHT_HPP + +#include "world/map/CMapBaseObj.hpp" + +class CMapLight : public CMapBaseObj { + public: + // TODO +}; + +#endif diff --git a/src/world/map/CMapObj.hpp b/src/world/map/CMapObj.hpp new file mode 100644 index 0000000..f962679 --- /dev/null +++ b/src/world/map/CMapObj.hpp @@ -0,0 +1,9 @@ +#ifndef WORLD_MAP_C_MAP_OBJ_HPP +#define WORLD_MAP_C_MAP_OBJ_HPP + +class CMapObj { + public: + // TODO +}; + +#endif diff --git a/src/world/map/CMapObjDef.hpp b/src/world/map/CMapObjDef.hpp new file mode 100644 index 0000000..1ce902b --- /dev/null +++ b/src/world/map/CMapObjDef.hpp @@ -0,0 +1,11 @@ +#ifndef WORLD_MAP_C_MAP_OBJ_DEF_HPP +#define WORLD_MAP_C_MAP_OBJ_DEF_HPP + +#include "world/map/CMapBaseObj.hpp" + +class CMapObjDef : public CMapBaseObj { + public: + // TODO +}; + +#endif diff --git a/src/world/map/CMapObjDefGroup.hpp b/src/world/map/CMapObjDefGroup.hpp new file mode 100644 index 0000000..b12f00a --- /dev/null +++ b/src/world/map/CMapObjDefGroup.hpp @@ -0,0 +1,9 @@ +#ifndef WORLD_MAP_C_MAP_OBJ_DEF_GROUP_HPP +#define WORLD_MAP_C_MAP_OBJ_DEF_GROUP_HPP + +class CMapObjDefGroup : public CMapBaseObj { + public: + // TODO +}; + +#endif diff --git a/src/world/map/CMapObjGroup.hpp b/src/world/map/CMapObjGroup.hpp new file mode 100644 index 0000000..7c4ee01 --- /dev/null +++ b/src/world/map/CMapObjGroup.hpp @@ -0,0 +1,9 @@ +#ifndef WORLD_MAP_C_MAP_OBJ_GROUP_HPP +#define WORLD_MAP_C_MAP_OBJ_GROUP_HPP + +class CMapObjGroup { + public: + // TODO +}; + +#endif