Пример #1
0
void GuiPowerDamageIndicator::onDraw(sf::RenderTarget& window)
{
    if (!my_spaceship)
        return;
    
    sf::Color color;
    string display_text;

    float power = my_spaceship->systems[system].power_level;
    float health = my_spaceship->systems[system].health;
    float heat = my_spaceship->systems[system].heat_level;
    int alpha = 128;
    if (system == SYS_FrontShield)
    {
        power = std::max(power, my_spaceship->systems[SYS_RearShield].power_level);
        health = std::max(health, my_spaceship->systems[SYS_RearShield].health);
        heat = std::max(heat, my_spaceship->systems[SYS_RearShield].heat_level);
    }
    if (health <= 0.0)
    {
        color = sf::Color::Red;
        display_text = "DAMAGED";
    }else if ((system == SYS_Warp || system == SYS_JumpDrive) && WarpJammer::isWarpJammed(my_spaceship->getPosition()))
    {
        color = sf::Color::Red;
        display_text = "JAMMED";
    }else if (power == 0.0)
    {
        color = sf::Color::Red;
        display_text = "NO POWER";
    }else if (my_spaceship->energy_level < 10)
    {
        color = sf::Color(255, 128, 0);
        alpha = 64;
        display_text = "LOW ENERGY";
    }else if (power < 0.3)
    {
        color = sf::Color(255, 128, 0);
        alpha = 64;
        display_text = "LOW POWER";
    }else if (heat > 0.90)
    {
        color = sf::Color(255, 128, 0);
        alpha = 64;
        display_text = "OVERHEATING";
    }else{
        return;
    }
    draw9Cut(window, rect, "button_background", sf::Color(0, 0, 0, alpha));
    draw9Cut(window, rect, "border_background", color);
    
    if (rect.height > rect.width)
        drawVerticalText(window, rect, display_text, ACenter, text_size, main_font, color);
    else
        drawText(window, rect, display_text, ACenter, text_size, main_font, color);
}
Пример #2
0
void GuiButton::onDraw(sf::RenderTarget& window)
{
    sf::Color color = button_color;
    if (!enabled)
        color = color * sf::Color(96, 96, 96, 255);
    else if (hover)
        color = color * sf::Color(128, 128, 128, 255);
    draw9Cut(window, rect, "button_background", color);
    drawText(window, rect, text, ACenter, text_size, sf::Color::Black);
}
Пример #3
0
void GuiSlider::onDraw(sf::RenderTarget& window)
{
    draw9Cut(window, rect, "button_background", sf::Color(64,64,64, 255));

    sf::Color color = sf::Color::White;
    if (!enabled)
        color = color * sf::Color(96, 96, 96, 255);
    else if (hover)
        color = sf::Color(255,255,255, 128);
    if (rect.width > rect.height)
    {
        float x;

        if (snap_value != std::numeric_limits<float>::infinity())
        {
            x = rect.left + (rect.width - rect.height) * (snap_value - min_value) / (max_value - min_value);
            sf::RectangleShape backgroundZero(sf::Vector2f(8.0, rect.height));
            backgroundZero.setPosition(x + rect.height / 2.0 - 4.0, rect.top);
            backgroundZero.setFillColor(sf::Color(8,8,8,255));
            window.draw(backgroundZero);
        }
        x = rect.left + (rect.width - rect.height) * (value - min_value) / (max_value - min_value);
        draw9Cut(window, sf::FloatRect(x, rect.top, rect.height, rect.height), "button_background", color);
    }else{
        float y;
        if (snap_value != std::numeric_limits<float>::infinity())
        {
            y = rect.top + (rect.height - rect.width) * (snap_value - min_value) / (max_value - min_value);
            sf::RectangleShape backgroundZero(sf::Vector2f(rect.width, 8.0));
            backgroundZero.setPosition(rect.left, y + rect.width / 2.0 - 4.0);
            backgroundZero.setFillColor(sf::Color(8,8,8,255));
            window.draw(backgroundZero);
        }
        y = rect.top + (rect.height - rect.width) * (value - min_value) / (max_value - min_value);
        draw9Cut(window, sf::FloatRect(rect.left, y, rect.width, rect.width), "button_background", color);
    }
    
    if (overlay_label)
    {
        overlay_label->setText(string(value, 0));
    }
}
Пример #4
0
void GuiBox::onDraw(sf::RenderTarget& window)
{
    if (fill_color.a > 0)
        draw9Cut(window, rect, "button_background", fill_color);
    draw9Cut(window, rect, "border_background", sf::Color::White);
}