73 lines
1.4 KiB
C++
73 lines
1.4 KiB
C++
/*
|
|
* GuiRenderer.cpp
|
|
*
|
|
* Created on: Nov 13, 2016
|
|
* Author: tibi
|
|
*/
|
|
|
|
#include <GameState.h>
|
|
#include <graphics/GuiRenderer.h>
|
|
#include <resources/Resources.h>
|
|
|
|
#include <sstream>
|
|
|
|
#include <SDL2/SDL.h>
|
|
|
|
namespace farmlands
|
|
{
|
|
namespace graphics
|
|
{
|
|
|
|
GuiRenderer::GuiRenderer()
|
|
: m_gameState(nullptr),
|
|
m_fps(0),
|
|
m_fpsIndex(0)
|
|
{
|
|
}
|
|
|
|
GuiRenderer::~GuiRenderer()
|
|
{
|
|
}
|
|
|
|
void GuiRenderer::initialize(GameState* gameState)
|
|
{
|
|
m_gameState = gameState;
|
|
}
|
|
|
|
void GuiRenderer::render()
|
|
{
|
|
computeFps();
|
|
|
|
// Prepare stuff
|
|
TTF_Font* font = m_gameState->resManager.font(resources::R::Fonts::DejaVuSans, 10);
|
|
SDL_Color white = { 255, 255, 255, 255 };
|
|
SDL_Rect dest = { 10, 10, 0, 0 };
|
|
|
|
// Figure out what text to print
|
|
std::stringstream textStream;
|
|
textStream << "FPS: " << m_fps;
|
|
|
|
// Render text
|
|
SDL_Texture* fpsText = m_gameState->sdlRenderer.renderText(textStream.str(), font, white);
|
|
SDL_QueryTexture(fpsText, NULL, NULL, &dest.w, &dest.h);
|
|
SDL_RenderCopy(m_gameState->sdlRenderer.internalRenderer(), fpsText, NULL, &dest);
|
|
}
|
|
|
|
void GuiRenderer::computeFps()
|
|
{
|
|
// Compute FPS
|
|
m_fpsVals[m_fpsIndex++] = 1.0f / m_gameState->elapsedTime;
|
|
if (m_fpsIndex >= GUIRENDERER_FPS_VALS)
|
|
{
|
|
m_fpsIndex = 0;
|
|
|
|
m_fps = 0;
|
|
for (int i = 0; i < GUIRENDERER_FPS_VALS; i++)
|
|
m_fps += m_fpsVals[i];
|
|
m_fps /= GUIRENDERER_FPS_VALS;
|
|
}
|
|
}
|
|
|
|
} /* namespace graphics */
|
|
} /* namespace farmlands */
|