#ifndef id263B7DAF9A1C40BB8517D5D328DF8A1B #define id263B7DAF9A1C40BB8517D5D328DF8A1B #include "doorkeeper/primitivetypes.hpp" #include "doorkeeper/implem/vector.hpp" #include "doorkeeper/components/basemapsource.hpp" #include "doorkeeper/components/pixelconv.hpp" #include #include namespace dkh { namespace implem { typedef int AsciiMapTileType; } //namespace implem class AsciiMapSource : public dk::BaseMapSource<2> { public: typedef dk::Vector<2> coords; typedef implem::AsciiMapTileType MapTileType; enum { MapDimensions = 2 }; AsciiMapSource ( void ) = delete; AsciiMapSource ( const AsciiMapSource& ) = delete; AsciiMapSource ( AsciiMapSource&& parOther ) = default; AsciiMapSource ( const char* parFilename, const coords& parSize, dk::MapTypes parMapType, const coords& parTileSize ); AsciiMapSource ( const std::string& parFilename, const coords& parSize, dk::MapTypes parMapType, const coords& parTileSize ); AsciiMapSource ( std::istream& parData, const coords& parSize, dk::MapTypes parMapType, const coords& parTileSize ); virtual ~AsciiMapSource ( void ) noexcept = default; virtual const coords& mapSize ( void ) const; virtual dk::MapTypes mapType ( void ) const; virtual int layersCount ( void ) const; virtual const coords& tileSize ( void ) const; virtual void chainedMaps ( std::vector& parOut ) const; virtual dk::HashType layerTypeHash ( int parIndex ) const; virtual const dk::PixelConv<2>& pixel_conv ( void ) const; private: void parse_map_data ( std::istream& parSrc ); virtual void fetch_raw ( char* parOut, const coords& parFrom, const coords& parTo, std::size_t parSize ); std::vector m_wholedata; const coords m_mapSize; const dk::PixelConvSquare<2> m_pixel_conv; const dk::MapTypes m_mapType; }; } //namespace dkh #endif