#pragma once #include "Common.h" #include "nbt/NBT.h" #include "Chunk.h" #include "Palette.h" #include "../Lockable.h" #include #include #include namespace Feather { struct LevelData { int32_t spawnX, spawnY, spawnZ; }; class World { public: World(std::string name); void PrepareSpawn(); // global palette of all block states static const GlobalPalette GLOBAL_PALETTE; Chunk* GetChunk(ChunkPos pos); LevelData GetLevelData() const { return m_levelData; } private: std::unique_ptr LoadChunk(ChunkPos pos); Lockable>> m_chunks; LevelData m_levelData; // TODO nuke this shit std::string m_name; }; }