#pragma once #include #include "GameType.h" class World; class LmpRepository; class TopoPatch; class WorldReader { public: WorldReader(GameType gameType) : gameType(gameType) {} World* readWorld(LmpRepository* lmpRepository, const char* name); private: GameType gameType; void decodeWorldFile(World* world, const unsigned char* data, int dataLength); void decodeTopography(World* world, const unsigned char* data, int dataLength); std::shared_ptr readTopoPatch(const unsigned char* data, int offset); void readTextureChunkOffsets(World* world, const unsigned char* data, int dataLength, int worldTexOffsetsOffset, int texMinx, int texMiny, int texMaxx, int texMaxy); void readElements(World* world, const unsigned char* data, int dataLength, int elementBase, int numElements, int texMinx, int texMiny); };