#pragma once #include "../../Level/ChunkSource.h" class ProgressListener; class LargeFeature; class StrongholdFeature; class VillageFeature; class MineShaftFeature; class PerlinNoise; class FlatLevelSource : public ChunkSource { public: static const int CHUNK_HEIGHT = 8; static const int CHUNK_WIDTH = 4; private: Level* level; Random* random; Random* pprandom; boolean generateStructures; VillageFeature* villageFeature; // = new VillageFeature(1); public: FlatLevelSource(Level* level, int64_t seed, bool generateStructures); ~FlatLevelSource(); private: void prepareHeights(byteArray blocks); public: virtual LevelChunk* create(int x, int z); virtual LevelChunk* getChunk(int xOffs, int zOffs); virtual bool hasChunk(int x, int y); virtual void postProcess(ChunkSource* parent, int xt, int zt); virtual bool save(bool force, ProgressListener* progressListener); virtual bool tick(); virtual bool shouldSave(); virtual std::wstring gatherStats(); virtual std::vector* getMobsAt( MobCategory* mobCategory, int x, int y, int z); virtual TilePos* findNearestMapFeature(Level* level, const std::wstring& featureName, int x, int y, int z); virtual void recreateLogicStructuresForChunk(int chunkX, int chunkZ); };