diff --git a/include/Game/FPSCounter.h b/include/Game/FPSCounter.h new file mode 100644 index 0000000..6dd4b49 --- /dev/null +++ b/include/Game/FPSCounter.h @@ -0,0 +1,42 @@ +#ifndef GUI_FPSCOUNTER_H__ +#define GUI_FPSCOUNTER_H__ + +#include "GUI/Frame.h" +#include "GUI/NumberFrame.h" + +namespace dd +{ +namespace GUI +{ + +class FPSCounter : public Frame +{ +public: + FPSCounter(Frame* parent, std::string name) + : Frame(parent, name) + { + m_Numbers = new GUI::NumberFrame(this, "FPSCounterNumberFrame"); + } + + virtual void Update(double dt) + { + m_NumFrames++; + m_Accum += dt; + + m_Numbers->SetNumber(1.0/(m_Accum/m_NumFrames)); + if (m_NumFrames % 20) { + //LOG_INFO("FPS: %f", 1.0/(m_Accum/m_NumFrames)); + } + } + +private: + NumberFrame* m_Numbers = nullptr; + + double m_Accum = 0.0; + int m_NumFrames = 0; +}; + +} +} +#endif + diff --git a/include/Game/HUD.h b/include/Game/HUD.h index 2a240b3..30afcf6 100644 --- a/include/Game/HUD.h +++ b/include/Game/HUD.h @@ -6,6 +6,7 @@ #include "GUI/NumberFrame.h" #include "Core/EKeyUp.h" #include "Game/EScoreEvent.h" +#include "Game/FPSCounter.h" namespace dd { @@ -31,6 +32,8 @@ public: m_ScoreNumberFrame->X = 15; m_ScoreNumberFrame->Y = 21; + //m_FPSCounter = new GUI::FPSCounter(this, "FPSCounter"); + EVENT_SUBSCRIBE_MEMBER(m_EScore, &HUD::OnScore); } @@ -38,6 +41,7 @@ private: TextureFrame* m_LevelIndicator = nullptr; TextureFrame* m_ScoreIndicator = nullptr; NumberFrame* m_ScoreNumberFrame = nullptr; + FPSCounter* m_FPSCounter = nullptr; EventRelay m_EScore;