TurtleBrains  0.3.5
High quality, portable, C++ framework for rapid 2D game development.
tb_sprite_manager.hpp
1 
9 #ifndef TurtleBrains_SpriteManager_hpp
10 #define TurtleBrains_SpriteManager_hpp
11 
12 #include <turtle_brains/graphics/tb_sprite.hpp>
13 #include <turtle_brains/graphics/tb_animated_sprite.hpp>
14 #include <turtle_brains/graphics/tb_sprite_sheet.hpp>
15 #include <turtle_brains/core/tb_noncopyable.hpp>
16 #include <turtle_brains/core/tb_string.hpp>
17 
18 #include <unordered_map>
19 
20 namespace TurtleBrains::Core { class DynamicStructure; }
21 
22 namespace TurtleBrains::Graphics
23 {
24  namespace Implementation { struct LoadingSheetInformation; }
25 
31  {
32  public:
38 
44 
89  bool LoadSpriteSheetFromFile(const String& spriteSheetName, const String& spriteSheetFile);
90 
101  bool AddSpriteSheet(const String& spriteSheetName, const SpriteSheet& spriteSheet);
102 
110  TextureHandle GetSpriteSheetTextureHandle(const String& spriteSheetName) const;
111 
122  SpriteFrame GetSpriteFrame(const String& spriteSheetName, const String& spriteName) const;
123 
141  Sprite GetSpriteFromFile(const String& textureFile, const PixelSpace& frameX = 0, const PixelSpace& frameY = 0,
142  const PixelSpace& frameWidth = 0, const PixelSpace& frameHeight = 0) const;
143 
154  Sprite GetSprite(const String& spriteSheetName, const String& spriteName) const;
155 
167  AnimatedSprite GetAnimatedSprite(const String& spriteSheetName, const String& spriteName) const;
168 
178  void AddAnimationSequences(const String& spriteSheetName, const String& spriteName, AnimatedSprite& animatedSprite) const;
179 
180  private:
181  void AddAnimationSequences(const SpriteSheet& spriteSheet, const String& spriteName, AnimatedSprite& animatedSprite) const;
182 
183  bool LoadAllAnimationSequences(SpriteSheet& spriteSheet, const String& forSprite,
184  const tbCore::DynamicStructure& animationSequences, const Implementation::LoadingSheetInformation& loadingInfo);
185  bool LoadAnimationSequence(SpriteSheet& spriteSheet, std::vector<String>& globalAnimationNames,
186  const tbCore::DynamicStructure& animationData, const String& forSprite, const Implementation::LoadingSheetInformation& loadingInfo);
187  bool LoadAllSpriteMaps(const tbCore::DynamicStructure& spriteSheetData, std::unordered_map<String, SpriteMap>& spriteMaps,
188  const Implementation::LoadingSheetInformation& loadingInfo);
189  bool LoadSpriteFrame(SpriteSheet& spriteSheet, const tbCore::DynamicStructure& frameData, const Implementation::LoadingSheetInformation& loadingInfo);
190 
191  using SpriteSheetContainer = std::unordered_map<String, SpriteSheet>;
192  SpriteSheetContainer mSpriteSheets;
193  };
194 
200 
201 }; /* namespace TurtleBrains::Graphics */
202 
204 
205 #endif /* TurtleBrains_SpriteManager_hpp */
Definition: tb_dynamic_structure.hpp:95
Definition: tb_noncopyable.hpp:21
Definition: tb_animated_sprite.hpp:118
Definition: tb_sprite.hpp:135
Definition: tb_sprite_manager.hpp:31
Sprite GetSprite(const String &spriteSheetName, const String &spriteName) const
Sprite GetSpriteFromFile(const String &textureFile, const PixelSpace &frameX=0, const PixelSpace &frameY=0, const PixelSpace &frameWidth=0, const PixelSpace &frameHeight=0) const
bool AddSpriteSheet(const String &spriteSheetName, const SpriteSheet &spriteSheet)
void AddAnimationSequences(const String &spriteSheetName, const String &spriteName, AnimatedSprite &animatedSprite) const
bool LoadSpriteSheetFromFile(const String &spriteSheetName, const String &spriteSheetFile)
TextureHandle GetSpriteSheetTextureHandle(const String &spriteSheetName) const
SpriteFrame GetSpriteFrame(const String &spriteSheetName, const String &spriteName) const
AnimatedSprite GetAnimatedSprite(const String &spriteSheetName, const String &spriteName) const
Definition: tb_sprite_sheet.hpp:32
Contains core functionality for each component of the API.
Definition: tb_debug_logger.hpp:125
Give the GameScene and Entities something to display, Text, Sprites and AnimatedSprites help bring th...
SpriteManager theSpriteManager
tbCore::uint16 PixelSpace
Definition: tb_texture_manager.hpp:34
Definition: tb_sprite.hpp:28