diff --git a/include/game-engine.h b/include/game-engine.h index d58922982ddc1c6cecd87627157b048859e289a2..6291dedbc1a53d26b588c55605cdcfcf4ecbf0be 100644 --- a/include/game-engine.h +++ b/include/game-engine.h @@ -4,6 +4,10 @@ #include <map> #include <string> #include <vector> +#include <chrono> +#include <ctime> + + // Return #include "logger.h" #include "entity-manager.h" @@ -29,6 +33,8 @@ class GameEngine bool isRunning; void handleInput(); private: + size_t _frame = 0; + std::time_t _frametime = 0; EntityManager _entityManager; Logger& _logger; diff --git a/src/game-engine.cpp b/src/game-engine.cpp index 1846be3ac4a2e7edafa13d9dc7e2e7bb391b9f50..1219df914f6c2cbc16e66c82660a059bc0b73a8c 100644 --- a/src/game-engine.cpp +++ b/src/game-engine.cpp @@ -10,7 +10,7 @@ GameEngine::~GameEngine() { this->_logger.info( "Cleaning GameEngine Object" ); } -void GameEngine::close(){} +void GameEngine::close(){ this->isRunning = false; } void GameEngine::init() { this->isRunning = false; @@ -24,9 +24,23 @@ Scene* GameEngine::currentScene() void GameEngine::run() { this->isRunning = true; + this->_frame = 0; + std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); + std::time_t _frametime = std::chrono::system_clock::to_time_t(now); + while( this->isRunning ) { this->update(); } } + void GameEngine::update() { this->_entityManager.update(); + std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); + + if( ++this->_frame > 10000 ) { this->close(); } + else if ( this->_frame % 1000 == 0 ) { + std::time_t cTime = std::chrono::system_clock::to_time_t(now); + size_t delTime = cTime - this->_frametime; + this->_frametime = cTime; + printf( "Frame: %i at %.2f fps\n", this->_frame / 1000, delTime == 0 ? 0.0 : 1.0 / delTime ); + } } void GameEngine::handleInput() { } diff --git a/src/main.cpp b/src/main.cpp index 242a827ea462a60618bf7f86fab54c20ccf7cae8..2e5a4298cbf501a3197c10fde4126c7efd49594e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -40,26 +40,7 @@ int main( int argc, char* argv[] ) { GameEngine* game = new GameEngine(); - - // Main Loop - while( state != Exit ) - { - if( ++tickCount > 1000000 ) - { - // Exit - state = Exit; - } - - // Update Entities - game->update(); - // Process Input - // Movement Updates - // Collision Updates - // Update Game State - // Render Game - - _frame++; - } + game->run(); userSettings.set( "exit", "teset" ); std::cout << userSettings;