TurtleBrains  0.3.5
High quality, portable, C++ framework for rapid 2D game development.
tbx_health_bar.hpp
1 
9 #ifndef TurtleBrainsExpress_HealthBar_hpp
10 #define TurtleBrainsExpress_HealthBar_hpp
11 
12 #include <turtle_brains/graphics/tb_graphic.hpp>
13 #include <turtle_brains/graphics/tb_sprite.hpp>
14 #include <turtle_brains/graphics/tb_text.hpp>
15 #include <turtle_brains/graphics/tb_basic_shapes.hpp>
16 
17 #include <turtle_brains/game/tb_entity_behavior_interface.hpp>
18 #include <turtle_brains/game/tb_game_timer.hpp>
19 
20 namespace TurtleBrains::Express::Counters
21 {
22 
27  {
28  public:
37  explicit HealthBar(const tbGraphics::Color& fillColor = tbGraphics::ColorPalette::Green,
38  const tbGraphics::Color& backColor = tbGraphics::ColorPalette::Black);
39 
43  virtual ~HealthBar(void);
44 
54  void SetSize(const tbGraphics::PixelSpace& width, const tbGraphics::PixelSpace& height);
55 
60  const tbCore::uint16& GetTotal(void) const;
61 
70  void SetTotal(const tbCore::uint16 total);
71 
75  const tbCore::uint16& GetCount(void) const;
76 
85  void SetCount(const tbCore::uint16 count);
86 
92  void SetFillColor(const tbGraphics::Color& fillColor);
93 
98  virtual tbGraphics::PixelSpace GetPixelWidth(void) const override;
99 
104  virtual tbGraphics::PixelSpace GetPixelHeight(void) const override;
105 
106  protected:
111  virtual void OnUpdate(const float deltaTime) override;
112 
116  virtual void OnRender(void) const override;
117 
118  private:
123  void GenerateBoxes(void);
124 
125  tbCore::uint16 mTotal;
126  tbCore::uint16 mCount;
127 
128  tbGraphics::PixelSpace mBarWidth;
129  tbGraphics::PixelSpace mBarHeight;
130  tbGraphics::PixelSpace mBorderWeight;
131  tbGraphics::Color mFillColor;
132  tbGraphics::Color mBackColor;
133 
134  tbGraphics::BoxShape mFilling;
135  tbGraphics::BoxShape mBacking;
136  bool mIsDirty;
137  };
138 
139 
145  {
146  public:
156  explicit HealthIcons(const tbGraphics::Sprite& fillingSprite, const tbGraphics::Sprite& backingSprite);
157 
161  virtual ~HealthIcons(void);
162 
171  void SetIcons(const tbGraphics::Sprite& fillingSprite, const tbGraphics::Sprite& backingSprite);
172 
177  const tbCore::uint16& GetTotal(void) const;
178 
187  void SetTotal(const tbCore::uint16 total);
188 
192  const tbCore::uint16& GetCount(void) const;
193 
202  void SetCount(const tbCore::uint16 count);
203 
204  protected:
209  virtual void OnRender(void) const override;
210 
211  private:
212  tbCore::uint16 mTotal;
213  tbCore::uint16 mCount;
214  tbGraphics::PixelSpace mPadding;
215  tbGraphics::Sprite mFillingSprite;
216  tbGraphics::Sprite mBackingSprite;
217  };
218 
219 
223 
224  // - Optional icon sprite/image/graphic??
225  // - Optional total counter / target value X; 3 / X
226  //
227  class Counter : public tbGraphics::Text
228  {
229  public:
235  explicit Counter(tbCore::uint16 total);
236 
240  virtual ~Counter(void);
241 
246  const tbCore::uint16& GetTotal(void) const;
247 
256  void SetTotal(const tbCore::uint16 total);
257 
261  const tbCore::uint16& GetCount(void) const;
262 
271  void SetCount(const tbCore::uint16 count);
272 
276  void JumpDisplay(void);
277 
278  protected:
282  virtual void OnUpdate(const float deltaTime) override;
283 
284  private:
285  tbCore::uint16 mTotal;
286  tbCore::uint16 mCount;
287  tbCore::uint16 mDisplayedCount;
288 
289  float mTimePerChange;
290  float mChangeTimer;
291  };
292 
293 }; /* namespace TurtleBrains::Express::Counters */
294 
295 namespace tbxCounters = TurtleBrains::Express::Counters;
296 
297 #endif /* TurtleBrainsExpress_HealthBar_hpp */
Definition: tbx_health_bar.hpp:228
void SetCount(const tbCore::uint16 count)
virtual void OnUpdate(const float deltaTime) override
const tbCore::uint16 & GetTotal(void) const
void SetTotal(const tbCore::uint16 total)
const tbCore::uint16 & GetCount(void) const
Definition: tbx_health_bar.hpp:27
void SetCount(const tbCore::uint16 count)
virtual void OnRender(void) const override
HealthBar(const tbGraphics::Color &fillColor=tbGraphics::ColorPalette::Green, const tbGraphics::Color &backColor=tbGraphics::ColorPalette::Black)
const tbCore::uint16 & GetCount(void) const
const tbCore::uint16 & GetTotal(void) const
virtual tbGraphics::PixelSpace GetPixelWidth(void) const override
void SetTotal(const tbCore::uint16 total)
void SetSize(const tbGraphics::PixelSpace &width, const tbGraphics::PixelSpace &height)
virtual tbGraphics::PixelSpace GetPixelHeight(void) const override
virtual void OnUpdate(const float deltaTime) override
void SetFillColor(const tbGraphics::Color &fillColor)
Definition: tbx_health_bar.hpp:145
void SetIcons(const tbGraphics::Sprite &fillingSprite, const tbGraphics::Sprite &backingSprite)
void SetTotal(const tbCore::uint16 total)
const tbCore::uint16 & GetTotal(void) const
HealthIcons(const tbGraphics::Sprite &fillingSprite, const tbGraphics::Sprite &backingSprite)
virtual void OnRender(void) const override
const tbCore::uint16 & GetCount(void) const
void SetCount(const tbCore::uint16 count)
Definition: tb_basic_shapes.hpp:264
Definition: tb_color.hpp:24
Definition: tb_graphic.hpp:50
Definition: tb_sprite.hpp:135
Definition: tb_text.hpp:57
std::uint16_t uint16
Unsigned integer with a size of 16 bits. Supports values from 0 to 65535.
Definition: tb_types.hpp:25
tbCore::uint16 PixelSpace
Definition: tb_texture_manager.hpp:34