/* Copyright 2015, Michele Santullo * This file is part of DoorKeeper. * * DoorKeeper is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * DoorKeeper is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with DoorKeeper. If not, see . */ #ifndef id6FB3FC97331449038D42AAAB4C01ABA1 #define id6FB3FC97331449038D42AAAB4C01ABA1 #include "doorkeeper/components/layer.hpp" #include "doorkeeper/components/exception.hpp" #include #include #include #include namespace dk { template class BaseMapSource; template class Tyler { typedef std::unique_ptr> LayerPtr; typedef std::vector LayerList; public: typedef typename LayerBase::coords coords; Tyler ( void ) = delete; Tyler ( Tyler&& ) = default; explicit Tyler ( const coords& parTileSize ); ~Tyler ( void ) noexcept = default; typename coords::scalar_type tiles_count ( void ) const; const coords& map_size ( void ) const { return m_size; } template Layer& push_layer ( BaseMapSource* parTilemap, int parIndex ); template Layer& push_layer ( BaseMapSource* parTilemap, const coords& parSubdiv, int parIndex ); template void push_layer_void ( BaseMapSource* parTilemap, int parIndex ); void preload ( const coords& parFrom, const coords& parTo ); private: coords m_size; const coords m_tilesize; LayerList m_layers; }; } //namespace dk #include "doorkeeper/implem/tyler.inl" #endif