TurtleBrains  0.3.5
High quality, portable, C++ framework for rapid 2D game development.
tbx_parallax_backdrop.hpp
1 
9 #ifndef TurtleBrainsExpress_ParallaxBackdrop_hpp
10 #define TurtleBrainsExpress_ParallaxBackdrop_hpp
11 
12 #include <turtle_brains/graphics/tb_graphic.hpp>
13 #include <turtle_brains/graphics/tb_sprite.hpp>
14 
15 #include <vector>
16 
17 namespace TurtleBrainsExpress
18 {
19  namespace Graphics
20  {
21 
28  {
29  public:
30  enum class ScrollingType
31  {
32  kNoScrolling,
33  kHorizontal,
34  kVertical,
36  };
37 
43  explicit ParallaxBackdrop(const ScrollingType& scrollingType = ScrollingType::kNoScrolling);
44 
48  virtual ~ParallaxBackdrop(void);
49 
62  void AddParallaxLayer(const tbCore::tbString& layerFilepath, const float parallaxMultiplier,
63  const tbMath::Vector2& offset = tbMath::Vector2::Zero());
64 
76  void AddParallaxLayer(const tbGraphics::Sprite& layerSprite, const float parallaxMultiplier);
77 
81  ScrollingType GetScrollingType(void) const { return mScrollingType; }
82 
87  void ResetTargetArea(void);
88 
93  void ResetTargetArea(float targetWidth, float targetHeight);
94 
95  protected:
100  virtual void OnRender(void) const override;
101 
102  private:
103  struct ParallaxLayer
104  {
105  tbGraphics::Sprite mSprite;
106  float mMultiplier;
107  };
108 
109  std::vector<ParallaxLayer> mParallaxLayers;
110  const ScrollingType mScrollingType;
111  tbMath::Vector2 mTargetArea;
112  };
113 
114  }; /* namespace Graphics */
115 }; /* namespace TurtleBrainsExpress */
116 
118 
119 #endif /* TurtleBrainsExpress_ParallaxBackdrop_hpp */
Definition: tb_vector.hpp:48
void AddParallaxLayer(const tbCore::tbString &layerFilepath, const float parallaxMultiplier, const tbMath::Vector2 &offset=tbMath::Vector2::Zero())
ScrollingType GetScrollingType(void) const
Definition: tbx_parallax_backdrop.hpp:81
Definition: tb_graphic.hpp:61
Definition: tbx_nine_slice.hpp:19
A collection of objects and functions to express games quickly.
static Vector2 Zero(void)
Definition: tb_vector.hpp:54
Definition: tbx_parallax_backdrop.hpp:27
ParallaxBackdrop(const ScrollingType &scrollingType=ScrollingType::kNoScrolling)
ScrollingType
Definition: tbx_parallax_backdrop.hpp:30
virtual void OnRender(void) const override
std::string tbString
Definition: tb_string.hpp:335
Definition: tb_sprite.hpp:136