1 // SuperTux 2 // Copyright (C) 2006 Matthias Braun <matze@braunis.de> 3 // 4 // This program is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // This program is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with this program. If not, see <http://www.gnu.org/licenses/>. 16 17 #ifndef HEADER_SUPERTUX_SPRITE_SPRITE_MANAGER_HPP 18 #define HEADER_SUPERTUX_SPRITE_SPRITE_MANAGER_HPP 19 20 #include <map> 21 #include <memory> 22 #include <string> 23 24 #include "sprite/sprite_ptr.hpp" 25 #include "util/currenton.hpp" 26 27 class SpriteData; 28 29 class SpriteManager final : public Currenton<SpriteManager> 30 { 31 private: 32 typedef std::map<std::string, std::unique_ptr<SpriteData> > Sprites; 33 Sprites sprites; 34 35 public: 36 SpriteManager(); 37 38 /** loads a sprite. */ 39 SpritePtr create(const std::string& filename); 40 41 private: 42 SpriteData* load(const std::string& filename); 43 }; 44 45 #endif 46 47 /* EOF */ 48