NasNas
An intuitive and beginner friendly 2D game framework for C++
SpriteComponent.hpp
1 // Created by Modar Nasser on 10/06/2020.
2 
3 #pragma once
4 
5 #include <string>
6 
7 #include <SFML/Graphics/RenderTarget.hpp>
8 #include <SFML/Graphics/Sprite.hpp>
9 #include <SFML/System/Vector2.hpp>
10 
11 #include <NasNas/core/data/Rect.hpp>
12 #include <NasNas/core/graphics/Anim.hpp>
13 #include <NasNas/core/graphics/SpriteSheet.hpp>
14 #include <NasNas/ecs/components/GraphicsComponent.hpp>
15 
16 namespace ns::ecs {
17 
19  public:
20  SpriteComponent(SpriteSheet* spritesheet, const sf::Vector2f& pos_offset);
21  explicit SpriteComponent(SpriteSheet* spritesheet, const std::string& anim_state="", const sf::Vector2f& pos_offset={0, 0});
22  void setSpritesheet(SpriteSheet* spritesheet);
23  auto getAnimState() const -> const std::string&;
24  void setAnimState(const std::string& anim_state);
25  auto getAnimPlayer() -> AnimPlayer&;
26  auto getDrawable() -> sf::Sprite& override;
27  auto getGlobalBounds() -> ns::FloatRect override;
28  void update() override;
29 
30  private:
31  SpriteSheet* m_spritesheet = nullptr;
32  AnimPlayer m_anim_player;
33  sf::Sprite m_drawable;
34 
35  void draw(sf::RenderTarget& target, sf::RenderStates states) const override;
36  };
37 
38  using Sprite = SpriteComponent;
39 
40 }
41