Mountain  1.0.0
Simple C++ 2D Game Framework
sprite.hpp
1 #pragma once
2 
3 #include <string>
4 
5 #include "Mountain/core.hpp"
7 #include "Mountain/scene/component/component.hpp"
9 
10 namespace Mountain
11 {
12  class Sprite : public Component
13  {
14  public:
15  MOUNTAIN_API Sprite() = default;
16  MOUNTAIN_API explicit Sprite(std::string spriteName);
17  MOUNTAIN_API Sprite(std::string spriteName, float_t frameDuration);
18 
22  MOUNTAIN_API void SetupTextures();
23 
24  MOUNTAIN_API const Pointer<Texture>& Get();
25 
26  [[nodiscard]]
27  MOUNTAIN_API const std::string& GetName() const;
28  MOUNTAIN_API void SetName(const std::string& name);
29 
30  [[nodiscard]]
31  MOUNTAIN_API const List<Pointer<Texture>>& GetTextures() const;
32 
33  [[nodiscard]]
34  MOUNTAIN_API size_t GetCurrentIndex() const;
35 
36  [[nodiscard]]
37  MOUNTAIN_API float_t GetFrameDuration() const;
38  MOUNTAIN_API void SetFrameDuration(float_t frameDuration);
39 
40  [[nodiscard]]
41  MOUNTAIN_API float_t GetUpdateTimer() const;
42 
43  protected:
44  void Update() override;
45 
46  private:
47  std::string m_Name;
48 
49  List<Pointer<Texture>> m_Textures;
50  size_t m_CurrentIndex = 0;
51 
52  float_t m_FrameDuration = 0.1f;
53  float_t m_UpdateTimer = 0.f;
54  };
55 }
Represents a behavior that can be attached to an Entity.
Definition: component.hpp:10
Defines the Mountain::List class.
A dynamic array implementation. Wrapper around the std::vector class.
Definition: list.hpp:24
Custom Mountain smart pointer. Represents both a std::shared_ptr and a std::weak_ptr.
Defines the Mountain::Texture class.
MOUNTAIN_API void SetupTextures()
Initialize the Texture vector.
void Update() override
Updates the component.
Contains all declarations of the Mountain Framework.
Definition: audio.hpp:22