#pragma once #include "../ChunkSource.h" #include "../LevelChunk.h" #include "../EmptyLevelChunk.h" #include "ChunkStorage.h" class ProgressListener; class ReadOnlyChunkCache : public ChunkSource { private: static const int LEN = 16; static const int LEN_MASK = LEN - 1; LevelChunkArray chunks; Level* level; ChunkStorage* storage; public: ReadOnlyChunkCache(Level* level, ChunkStorage* storage); virtual ~ReadOnlyChunkCache(); virtual bool hasChunk(int x, int z); byteArray emptyPixels; virtual LevelChunk* create(int x, int z); virtual LevelChunk* getChunk(int x, int z); private: LevelChunk* load(int x, int z); // 4J - TODO - was synchronized public: virtual void postProcess(ChunkSource* parent, int x, int z); 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); };