//---------------------------------------------------------------------------------
// Name: handleGameStates() 
//---------------------------------------------------------------------------------
void GameplayState::handleGameStates(  App * app, unsigned ms )
{
    if ( isInState(MAP_COMPLETED) && 
         ms > m_map_complete_time + MAP_COMPLETE_INTERVAL )
    {
        changeState( GAMEPLAY, app );
    }

    if ( isInState(GAME_OVER) && 
         m_game_over_anim.expired() )
    {
        BATTLE_CITY->resetGame();
        changeState( INTRO, app );
    }
}
//---------------------------------------------------------------------------------
// Name: execute() 
//---------------------------------------------------------------------------------
void GameplayState::execute(App * app)
{
    unsigned ms = TIMER->getTime();
    RENDER_MGR->handleEvents();

    updateGui();

    EVENT_MGR->update(ms);
    AUDIO_MGR->update(ms);
    PROC_MGR ->update(ms);
    
    if ( !isInState(GAME_OVER))
        BATTLE_CITY->update(ms);
 
    if ( !isInState( MAP_COMPLETED | GAME_OVER )) 
    {
        AI->update(ms);
        checkForMapComplete();
    }

    handleGameStates( app, ms );

    RENDER_MGR->update();
}
void FIFOCacheMemState::accessAddress(uint32_t addr)
{
	if(!isInState(addr))
	{
		MemEntry tmp;
		tmp.address = addr;

		content.insert(content.begin(), tmp);

		if(content.size() > max_lines)
		{
			content.pop_back();
			assert(content.size() <= max_lines);
		}
	}
	else
	{
		// do nothing.
	}
}