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 TurtleBrains::Express::Graphics
18 {
19 
26  {
27  public:
28  enum class ScrollingType
29  {
30  kNoScrolling,
31  kHorizontal,
32  kVertical,
34  };
35 
42 
46  virtual ~ParallaxBackdrop(void);
47 
60  void AddParallaxLayer(const tbCore::String& layerFilepath, const float parallaxMultiplier,
61  const tbMath::Vector2& offset = tbMath::Vector2::Zero());
62 
74  void AddParallaxLayer(const tbGraphics::Sprite& layerSprite, const float parallaxMultiplier,
75  const tbMath::Vector2& offset = tbMath::Vector2::Zero());
76 
80  ScrollingType GetScrollingType(void) const { return mScrollingType; }
81 
86  void ResetTargetArea(void);
87 
92  void ResetTargetArea(float targetWidth, float targetHeight);
93 
94  protected:
99  virtual void OnRender(void) const override;
100 
101  private:
102  struct ParallaxLayer
103  {
104  tbGraphics::Sprite mSprite;
105  float mMultiplier;
106  };
107 
108  std::vector<ParallaxLayer> mParallaxLayers;
109  ScrollingType mScrollingType;
110  tbMath::Vector2 mTargetArea;
111  };
112 
113 }; /* namespace TurtleBrains::Express::Graphics */
114 
115 namespace tbxGraphics = TurtleBrains::Express::Graphics;
116 
117 #endif /* TurtleBrainsExpress_ParallaxBackdrop_hpp */
Definition: tbx_parallax_backdrop.hpp:26
ScrollingType
Definition: tbx_parallax_backdrop.hpp:29
void AddParallaxLayer(const tbCore::String &layerFilepath, const float parallaxMultiplier, const tbMath::Vector2 &offset=tbMath::Vector2::Zero())
virtual void OnRender(void) const override
void ResetTargetArea(float targetWidth, float targetHeight)
void AddParallaxLayer(const tbGraphics::Sprite &layerSprite, const float parallaxMultiplier, const tbMath::Vector2 &offset=tbMath::Vector2::Zero())
ParallaxBackdrop(const ScrollingType &scrollingType=ScrollingType::kFullScrolling)
ScrollingType GetScrollingType(void) const
Definition: tbx_parallax_backdrop.hpp:80
Definition: tb_graphic.hpp:50
Definition: tb_sprite.hpp:135
Definition: tb_vector.hpp:99
static TypedVector2 Zero(void)
Definition: tb_vector.hpp:104
std::string String
Definition: tb_string.hpp:302