#include "game-engine.h"


GameEngine::GameEngine()
	: _logger( Logger::instance() )
{
	this->_logger.info( "Creating GameEngine Object" );
}
GameEngine::~GameEngine()
{
	this->_logger.info( "Cleaning GameEngine Object" );
}
void GameEngine::close(){ this->isRunning = false; }
void GameEngine::init()
{
	this->isRunning = false;
	this->_currScene = "";
}
// void GameEngine::changeScene( Scene scene ){}
Scene* GameEngine::currentScene()
{
	return nullptr;
}
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() {  }