ProtoTank/Game.cpp
2024-09-14 16:36:15 +02:00

60 lines
1.5 KiB
C++

#include "Game.hpp"
#include <SFML/Window/ContextSettings.hpp>
#include <SFML/Window/Event.hpp>
using std::make_shared;
using std::make_unique;
Game::Game(bool dbg) : gbDbgModeEnabled(dbg) {
InitWindows();
if (gbDbgModeEnabled)
gDbgUI = make_unique<DebugUI>();
}
void Game::InitWindows() {
// Create default game window
sf::ContextSettings sWindowSettings;
sWindowSettings.depthBits = 0;
sWindowSettings.stencilBits = 0;
sWindowSettings.antialiasingLevel = 8;
sWindowSettings.sRgbCapable = true;
gMainWindow = make_shared<sf::RenderWindow>(
sf::VideoMode(1080, 720), "ProtoTank",
(sf::Style::Close | sf::Style::Titlebar),
sWindowSettings
);
gMainWindow->setVerticalSyncEnabled(false);
gMainWindow->setFramerateLimit(60);
gMainWindow->setKeyRepeatEnabled(false);
gMainWindow->setMouseCursorVisible(true);
}
GAME_STATUS Game::Update() {
gLoopTimer.restart();
sf::Event event;
while (gMainWindow->pollEvent(event)) {
if (event.type == sf::Event::Closed)
gMainWindow->close();
}
/*
auto ticks = static_cast<int32_t>(mLoopTimer.getElapsedTime().asMilliseconds());
gTicksMonitoring.push_back(ticks);
double cpuUsage = std::accumulate(gTicksMonitoring.begin(), gTicksMonitoring.end(), 0) / gTicksMonitoring.size();
*/
if (gMainWindow->isOpen())
return GAME_RUNNING;
else
return GAME_QUIT;
}
void Game::Render() {
gMainWindow->clear();
gDbgUI->UpdateDebugData(gMainWindow);
gMainWindow->display();
}