Пример #1
0
void Label::draw()
{
	Render* render = Render::getInstance();
	Neo2DEngine* gui = Neo2DEngine::getInstance();

	if (m_labelText == NULL)
	{
		m_labelText = render->createText(m_font.getSafeString(),
										 m_fontSize);
		m_labelText->setAlign(m_alignment);
	}

	m_labelText->setText(m_label.c_str());
	render->drawText(m_labelText, m_x + 0.5 * (float) m_width,
					 m_y + 0.5 * m_labelText->getSize() + 0.5 * (float) m_height);
}
Пример #2
0
int Game::run()
{
    using namespace std::placeholders;

    if ( m_glfw == false ) {
        std::cerr << "Can't initialize GLFW" << std::endl;
        return 1;
    }

    try {
        Timer timer;
        Render render;
        Font font( m_config.fontSize );
        Window window( m_config.windowWidth, m_config.windowHeight );

        window.setClickHandler( std::bind( & Game::onWindowClick, this, _1, _2, _3 ) );
        resetTarget();

        for ( short frame = 0; window.shouldClose() == false; ++ frame ) {
            //! Двигаем цель
            m_target->move();

            //! Проверяем выход за видимые границы
            if ( m_target->inBounds() == false ) {
                resetTarget();
            }

            //! Проверяем переполнении счетчика кадров
            if ( frame < 0 ) {
                frame = 0;
                timer.reset();
            }

            //! Определяем размер области для рисования
            auto size = std::make_pair( 0, 0 );
            window.readViewportSize( size.first, size.second );

            //! FPS = frame * 10^6 / microseconds
            const auto score = std::to_string( m_score );
            const auto fps = std::to_string( int ( 1000000.0 * frame / timer.getDuration() ) );

            //! Рисуем игровые объекты
            render.begin( size.first, size.second );
            render.useColor( m_target->getColor().red, m_target->getColor().green, m_target->getColor().blue );
            render.drawDisk( m_target->getX(), m_target->getY(), m_target->getRadius(), m_config.diskQuality );
            render.useColor( 1.0, 1.0, 1.0 );
            render.drawText( -0.9, -0.9, font, score );
            render.drawText( 0.9 - fps.length() * font.getSize(), -0.9, font, fps );
            render.end();

            //! Обновляем окно
            window.update();
        }

    } catch ( std::exception & exception ) {
        std::cerr << exception.what() << std::endl;
        return 1;
    }

    return 0;
}