BGSpriteComponent.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // ----------------------------------------------------------------
  2. // From Game Programming in C++ by Sanjay Madhav
  3. // Copyright (C) 2017 Sanjay Madhav. All rights reserved.
  4. //
  5. // Released under the BSD License
  6. // See LICENSE in root directory for full details.
  7. // ----------------------------------------------------------------
  8. #pragma once
  9. #include "SpriteComponent.h"
  10. #include <vector>
  11. #include "Math.h"
  12. class BGSpriteComponent : public SpriteComponent
  13. {
  14. public:
  15. // Set draw order to default to lower (so it's in the background)
  16. BGSpriteComponent(class Actor* owner, int drawOrder = 10);
  17. // Update/draw overridden from parent
  18. void Update(float deltaTime) override;
  19. void Draw(SDL_Renderer* renderer) override;
  20. // Set the textures used for the background
  21. void SetBGTextures(const std::vector<SDL_Texture*>& textures);
  22. // Get/set screen size and scroll speed
  23. void SetScreenSize(const Vector2& size) { mScreenSize = size; }
  24. void SetScrollSpeed(float speed) { mScrollSpeed = speed; }
  25. float GetScrollSpeed() const { return mScrollSpeed; }
  26. private:
  27. // Struct to encapsulate each bg image and its offset
  28. struct BGTexture
  29. {
  30. SDL_Texture* mTexture;
  31. Vector2 mOffset;
  32. };
  33. std::vector<BGTexture> mBGTextures;
  34. Vector2 mScreenSize;
  35. float mScrollSpeed;
  36. };