Загрузка данных
/// 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;