Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_rhythmgame_Other_12

related scripts: Alarm_0CleanUp_0Create_0Draw_0Other_10Other_11Other_12 Other_13Other_14Other_15Step_0Step_2

(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
        var _lyric_start_time = max(0, lyric_time[lyrics_index - 1]);
21
        with (vocals)
22
        {
23
            for (i = other.lyric_start_index; i < maxnote; i++)
24
            {
25
                if ((_lyric_start_time + 0.03) < noteend[i])
26
                {
27
                    other.lyric_start_index = i;
28
                    break;
29
                }
30
            }
31
        }
32
        if (is_undefined(lyric_surface) || !surface_exists(lyric_surface))
33
            lyric_surface = surface_create(640, 100);
34
        var _hspace = (global.lang == "ja") ? 16 : 8;
35
        scr_draw_text_monospace(_textx, _texty, censored_lyric, _hspace, 18, _len, true, 2, 2, _len2);
36
        _maxlength = array_length(lyric_end);
37
        _current_note = max(0, _maxlength - 1);
38
        surface_set_target(lyric_surface);
39
        draw_clear(c_black);
40
        draw_set_color(c_white);
41
        scr_draw_text_monospace(320, 50, current_lyric, _hspace, 18, _len, false, 2, 2, _len2);
42
        surface_reset_target();
43
        lyric_sprite[0] = sprite_create_from_surface(lyric_surface, 0, 0, 640, 100, true, false, 320, 50);
44
        surface_set_target(lyric_surface);
45
        draw_clear(c_black);
46
        draw_set_color(c_white);
47
        scr_draw_text_monospace(320, 50, censored_lyric, _hspace, 18, _len, false, 2, 2, _len2);
48
        surface_reset_target();
49
        lyric_sprite[1] = sprite_create_from_surface(lyric_surface, 0, 0, 640, 100, true, false, 320, 50);
50
        update_lyrics = false;
51
    }
52
    with (vocals)
53
    {
54
        for (i = 0; i < _maxlength; i++)
55
        {
56
            var _index = i + other.lyric_start_index;
57
            if (_index >= maxnote)
58
                break;
59
            if (other.trackpos < noteend[_index])
60
            {
61
                _current_note = clamp(i, 0, _maxlength - 1);
62
                _lerp = clamp01(inverselerp(notetime[_index], noteend[_index], other.trackpos));
63
                
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));
64
                break;
65
            }
66
        }
67
    }
68
    var _progress = lerp(lyric_start[_current_note], lyric_end[_current_note], _lerp);
69
    if (_current_note == 0 && trackpos < vocals.notetime[lyric_start_index])
70
        _progress = _textx - 320;
71
    scr_draw_set_mask(false);
72
    ossafe_fill_rectangle(_textx - 320, _texty - 48, _textx + 320, _texty + 48);
73
    draw_set_alpha(1);
74
    if (_len2 > 0)
75
    {
76
        if (_current_note < line_switch)
77
        {
78
            ossafe_fill_rectangle(_progress, _texty - 48, _textx + 320, _texty);
79
            ossafe_fill_rectangle(_textx - 320, _texty, _textx + 320, _texty + 48);
80
        }
81
        else
82
        {
83
            ossafe_fill_rectangle(_progress, _texty, _textx + 320, _texty + 48);
84
        }
85
    }
86
    else
87
    {
88
        ossafe_fill_rectangle(_progress, _texty - 24, _textx + 320, _texty + 24);
89
    }
90
    scr_draw_in_mask_begin();
91
    draw_set_color(c_black);
92
    draw_sprite_ext(lyric_sprite[0], 0, _textx - 2, _texty, 1, 1, 0, c_black, 1);
93
    draw_sprite_ext(lyric_sprite[0], 0, _textx + 2, _texty, 1, 1, 0, c_black, 1);
94
    draw_sprite_ext(lyric_sprite[0], 0, _textx, _texty - 2, 1, 1, 0, c_black, 1);
95
    draw_sprite_ext(lyric_sprite[0], 0, _textx, _texty + 2, 1, 1, 0, c_black, 1);
96
    draw_sprite_ext(lyric_sprite[0], 0, _textx, _texty, 1, 1, 0, c_white, 1);
97
    scr_draw_in_mask_end();
98
    scr_draw_set_mask(false);
99
    ossafe_fill_rectangle(_textx - 320, _texty - 24, _textx + 320, _texty + 24);
100
    draw_set_alpha(1);
101
    if (_len2 > 0)
102
    {
103
        if (_current_note < line_switch)
104
        {
105
            ossafe_fill_rectangle(_textx - 320, _texty - 48, _progress, _texty);
106
        }
107
        else
108
        {
109
            ossafe_fill_rectangle(_textx - 320, _texty - 48, _textx + 320, _texty);
110
            ossafe_fill_rectangle(_textx - 320, _texty, _progress, _texty + 48);
111
        }
112
    }
113
    else
114
    {
115
        ossafe_fill_rectangle(_textx - 320, _texty - 24, _progress, _texty + 24);
116
    }
117
    scr_draw_in_mask_begin();
118
    draw_sprite_ext(lyric_sprite[1], 0, _textx - 2, _texty, 1, 1, 0, c_white, 1);
119
    draw_sprite_ext(lyric_sprite[1], 0, _textx + 2, _texty, 1, 1, 0, c_white, 1);
120
    draw_sprite_ext(lyric_sprite[1], 0, _textx, _texty - 2, 1, 1, 0, c_white, 1);
121
    draw_sprite_ext(lyric_sprite[1], 0, _textx, _texty + 2, 1, 1, 0, c_white, 1);
122
    draw_sprite_ext(lyric_sprite[1], 0, _textx, _texty, 1, 1, 0, c_blue, 1);
123
    scr_draw_in_mask_end();
124
    draw_set_halign(fa_left);
125
    draw_set_valign(fa_top);
126
    draw_set_color(c_white);
127
}