Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_rhythmgame_Other_12

(view raw script w/o annotations or w/e)
1
if (current_lyric != "" && i_ex(vocals) && lyric_count > 0)
2
{
3
    var _len = string_length(current_lyric);
4
    var _len2 = 0;
5
    if (string_pos("#", current_lyric) > 0)
6
    {
7
        _len = string_pos("#", current_lyric) - 1;
8
        _len2 = string_length(current_lyric) - (_len + 1);
9
    }
10
    var _textx = camerax() + 320;
11
    var _texty = cameray() + 420;
12
    var _maxlength = array_length(lyric_end);
13
    var _current_note = max(0, _maxlength - 1);
14
    var _lerp = 1;
15
    draw_set_halign(fa_center);
16
    draw_set_valign(fa_middle);
17
    draw_set_font(
scr_84_get_font
scr_84_get_font

function
scr_84_get_font(arg0)
{ if (!variable_global_exists("chemg_last_get_font")) global.chemg_last_get_font = ""; if (arg0 != global.chemg_last_get_font) global.chemg_last_get_font = arg0; return ds_map_find_value(global.font_map, arg0); }
("main"));
18
    if (update_lyrics)
19
    {
20
        with (vocals)
21
        {
22
            for (i = other.lyric_start_index; i < maxnote; i++)
23
            {
24
                if (other.trackpos < noteend[i])
25
                {
26
                    other.lyric_start_index = i;
27
                    break;
28
                }
29
            }
30
        }
31
        if (is_undefined(lyric_surface) || !surface_exists(lyric_surface))
32
            lyric_surface = surface_create(640, 100);
33
        var _hspace = (global.lang == "ja") ? 16 : 8;
34
        scr_draw_text_monospace(_textx, _texty, censored_lyric, _hspace, 18, _len, true, 2, 2, _len2);
35
        surface_set_target(lyric_surface);
36
        draw_clear(c_black);
37
        draw_set_color(c_white);
38
        scr_draw_text_monospace(320, 50, current_lyric, _hspace, 18, _len, false, 2, 2, _len2);
39
        surface_reset_target();
40
        lyric_sprite[0] = sprite_create_from_surface(lyric_surface, 0, 0, 640, 100, true, false, 320, 50);
41
        surface_set_target(lyric_surface);
42
        draw_clear(c_black);
43
        draw_set_color(c_white);
44
        scr_draw_text_monospace(320, 50, censored_lyric, _hspace, 18, _len, false, 2, 2, _len2);
45
        surface_reset_target();
46
        lyric_sprite[1] = sprite_create_from_surface(lyric_surface, 0, 0, 640, 100, true, false, 320, 50);
47
        update_lyrics = false;
48
    }
49
    with (vocals)
50
    {
51
        for (i = 0; i < _maxlength; i++)
52
        {
53
            var _index = i + other.lyric_start_index;
54
            if (_index >= maxnote)
55
                break;
56
            if (other.trackpos < noteend[_index])
57
            {
58
                _current_note = clamp(i, 0, _maxlength - 1);
59
                _lerp = clamp01(inverselerp(notetime[_index], noteend[_index], other.trackpos));
60
                
scr_debug_print_persistent
scr_debug_print_persistent

function
scr_debug_print_persistent(arg0, arg1)
{ } function scr_debug_delete_persistent(arg0, arg1 = false) { } function scr_debug_clear_persistent() { }
("lerp", string(notetime[_index]) + " - " + string(noteend[_index]) + " - " + string(_lerp));
61
                break;
62
            }
63
        }
64
    }
65
    var _progress = lerp(lyric_start[_current_note], lyric_end[_current_note], _lerp);
66
    if (_current_note == 0 && trackpos < vocals.notetime[lyric_start_index])
67
        _progress = _textx - 320;
68
    scr_draw_set_mask(false);
69
    ossafe_fill_rectangle(_textx - 320, _texty - 48, _textx + 320, _texty + 48);
70
    draw_set_alpha(1);
71
    if (_len2 > 0)
72
    {
73
        if (_current_note < line_switch)
74
        {
75
            ossafe_fill_rectangle(_progress, _texty - 48, _textx + 320, _texty);
76
            ossafe_fill_rectangle(_textx - 320, _texty, _textx + 320, _texty + 48);
77
        }
78
        else
79
        {
80
            ossafe_fill_rectangle(_progress, _texty, _textx + 320, _texty + 48);
81
        }
82
    }
83
    else
84
    {
85
        ossafe_fill_rectangle(_progress, _texty - 24, _textx + 320, _texty + 24);
86
    }
87
    scr_draw_in_mask_begin();
88
    draw_set_color(c_black);
89
    draw_sprite_ext(lyric_sprite[0], 0, _textx - 2, _texty, 1, 1, 0, c_black, 1);
90
    draw_sprite_ext(lyric_sprite[0], 0, _textx + 2, _texty, 1, 1, 0, c_black, 1);
91
    draw_sprite_ext(lyric_sprite[0], 0, _textx, _texty - 2, 1, 1, 0, c_black, 1);
92
    draw_sprite_ext(lyric_sprite[0], 0, _textx, _texty + 2, 1, 1, 0, c_black, 1);
93
    draw_sprite_ext(lyric_sprite[0], 0, _textx, _texty, 1, 1, 0, c_white, 1);
94
    scr_draw_in_mask_end();
95
    scr_draw_set_mask(false);
96
    ossafe_fill_rectangle(_textx - 320, _texty - 24, _textx + 320, _texty + 24);
97
    draw_set_alpha(1);
98
    if (_len2 > 0)
99
    {
100
        if (_current_note < line_switch)
101
        {
102
            ossafe_fill_rectangle(_textx - 320, _texty - 48, _progress, _texty);
103
        }
104
        else
105
        {
106
            ossafe_fill_rectangle(_textx - 320, _texty - 48, _textx + 320, _texty);
107
            ossafe_fill_rectangle(_textx - 320, _texty, _progress, _texty + 48);
108
        }
109
    }
110
    else
111
    {
112
        ossafe_fill_rectangle(_textx - 320, _texty - 24, _progress, _texty + 24);
113
    }
114
    scr_draw_in_mask_begin();
115
    draw_sprite_ext(lyric_sprite[1], 0, _textx - 2, _texty, 1, 1, 0, c_white, 1);
116
    draw_sprite_ext(lyric_sprite[1], 0, _textx + 2, _texty, 1, 1, 0, c_white, 1);
117
    draw_sprite_ext(lyric_sprite[1], 0, _textx, _texty - 2, 1, 1, 0, c_white, 1);
118
    draw_sprite_ext(lyric_sprite[1], 0, _textx, _texty + 2, 1, 1, 0, c_white, 1);
119
    draw_sprite_ext(lyric_sprite[1], 0, _textx, _texty, 1, 1, 0, c_blue, 1);
120
    scr_draw_in_mask_end();
121
    draw_set_halign(fa_left);
122
    draw_set_valign(fa_top);
123
    draw_set_color(c_white);
124
}