Загрузка данных


/// DRAW EVENT

// Безопасное значение напряжения
var tension = clamp(global.tension, 0, 101);
var tension_prev = clamp(global.tensioncanbe, 0, 101);

// Плавное движение индикаторов
fader[0] = lerp(fader[0], tension, 0.10);
fader[1] = lerp(fader[1], tension, 0.20);

fader[2] = lerp(fader[2], tension_prev, 0.10);
fader[3] = lerp(fader[3], tension_prev, 0.20);

// Размер полоски
var bar_w = sprite_get_width(spr_tensionbar);
var bar_h = sprite_get_height(spr_tensionbar);

// -------------------------------------------------
// SURFACE 0
// -------------------------------------------------

if (!surface_exists(surf[0]))
{
    surf[0] = surface_create(bar_w, bar_h);
}

surface_set_target(surf[0]);
draw_clear_alpha(c_black, 0);

// Основной спрайт
draw_sprite_ext(
    spr_tensionbar,
    (tension >= 100) ? 2 : 1,
    0, 0,
    image_xscale,
    image_yscale,
    image_angle,
    image_blend,
    image_alpha
);

// Высота заполнения
var h0 = clamp((1 - fader[0] / 100) * 299 + 2, 0, 299);
var h1 = clamp((1 - fader[1] / 100) * 299, 0, 299);

// Не даём draw_sprite_part_ext получить отрицательный размер
if (h0 > 0)
{
    draw_sprite_part_ext(
        spr_tensionbar,
        3,
        0, 8,
        bar_w,
        h0,
        0, 8,
        image_xscale,
        image_yscale,
        image_blend,
        image_alpha
    );
}

if (h1 > 0)
{
    draw_sprite_part_ext(
        spr_tensionbar,
        0,
        0, 8,
        bar_w,
        h1,
        0, 8,
        image_xscale,
        image_yscale,
        image_blend,
        image_alpha
    );
}

surface_reset_target();


// -------------------------------------------------
// SURFACE 1
// -------------------------------------------------

if (!surface_exists(surf[1]))
{
    surf[1] = surface_create(bar_w, bar_h);
}

surface_set_target(surf[1]);
draw_clear_alpha(c_black, 0);

draw_sprite_ext(
    spr_tensionbar,
    (tension >= 100) ? 2 : 1,
    0, 0,
    image_xscale,
    image_yscale,
    image_angle,
    image_blend,
    image_alpha
);

var h2 = clamp((1 - fader[2] / 100) * 299 + 2, 0, 299);
var h3 = clamp((1 - fader[3] / 100) * 299, 0, 299);

if (h2 > 0)
{
    draw_sprite_part_ext(
        spr_tensionbar,
        3,
        0, 8,
        bar_w,
        h2,
        0, 8,
        image_xscale,
        image_yscale,
        image_blend,
        image_alpha
    );
}

if (h3 > 0)
{
    draw_sprite_part_ext(
        spr_tensionbar,
        0,
        0, 8,
        bar_w,
        h3,
        0, 8,
        image_xscale,
        image_yscale,
        image_blend,
        image_alpha
    );
}

surface_reset_target();


// -------------------------------------------------
// РИСОВАНИЕ
// -------------------------------------------------

draw_surface(surf[1], x, y);

draw_surface_ext(
    surf[0],
    x, y,
    1, 1,
    0,
    c_white,
    0.5
);


// -------------------------------------------------
// ЛОГОТИП
// -------------------------------------------------

draw_sprite(
    spr_tentionlogo,
    0,
    global.camx + 8,
    global.camy + 75
);


// -------------------------------------------------
// ТЕКСТ
// -------------------------------------------------

if (tension < 100)
{
    draw_set_color(c_white);

    draw_text_transformed(
        global.camx + 8,
        global.camy + 115,
        string(floor(tension)) + "\n%",
        0.8,
        0.8,
        0
    );
}
else
{
    draw_set_color(c_yellow);

    draw_text_transformed(
        global.camx + 8,
        global.camy + 115,
        "М",
        0.8,
        0.8,
        0
    );

    draw_text_transformed(
        global.camx + 10,
        global.camy + 137,
        "А",
        0.8,
        0.8,
        0
    );

    draw_text_transformed(
        global.camx + 12,
        global.camy + 159,
        "К",
        0.8,
        0.8,
        0
    );

    draw_text_transformed(
        global.camx + 14,
        global.camy + 181,
        "С",
        0.8,
        0.8,
        0
    );

    draw_set_color(c_white);
}


// -------------------------------------------------
// ПРЕДЫДУЩЕЕ ЗНАЧЕНИЕ
// -------------------------------------------------

global.tensioncanbe = global.tension;