Deltarune script viewer

← back to main script listing

gml_Object_obj_CHAPTER_SELECT_Draw_0

(view raw script w/o annotations or w/e)
1
if (global.is_console)
2
{
3
    if (chapter_is_loading)
4
    {
5
        draw_set_font(fnt_mainbig);
6
        draw_set_halign(fa_center);
7
        draw_text(320, 250, "LOADING...");
8
    }
9
}
10
if (!audio_group_is_loaded(1))
11
    exit;
12
if (!init_loaded)
13
    exit;
14
draw_set_font(text_font);
15
draw_set_halign(fa_center);
16
draw_set_color(c_gray);
17
draw_set_halign(fa_left);
18
draw_set_color(c_white);
19
if (timer < 20)
20
    timer++;
21
if (con == "init")
22
{
23
    if (timer == 1)
24
        loop = audio_play_sound(AUDIO_DRONE, 15, 1);
25
    if (timer == 15)
26
        con = "start";
27
}
28
if (con == "start")
29
{
30
    file_found = false;
31
    if (ossafe_file_exists("dr.ini"))
32
    {
33
        ossafe_ini_open("dr.ini");
34
        ossafe_ini_close();
35
    }
36
    for (var i = 0; i < 7; i++)
37
    {
38
        var filename = "filech" + string(i) + "_";
39
        if (ossafe_file_exists(filename + string(3)) || ossafe_file_exists(filename + string(4)) || ossafe_file_exists(filename + string(5)))
40
            highestCompletedChapter = i;
41
        if (highestCompletedChapter > 0)
42
            file_found = true;
43
    }
44
    show_debug_message("highestCompletedChapter:" + string(highestCompletedChapter));
45
    for (var i = 0; i < 7; i++)
46
    {
47
        var filename = "filech" + string(i) + "_";
48
        if (ossafe_file_exists(filename + string(0)) || ossafe_file_exists(filename + string(1)) || ossafe_file_exists(filename + string(2)))
49
            highestUncompletedChapter = i;
50
        if (highestUncompletedChapter > 0)
51
            file_found = true;
52
    }
53
    show_debug_message("highestUncompletedChapter:" + string(highestUncompletedChapter));
54
    if (file_found == false)
55
    {
56
        con = "nofile";
57
        fade = fademax;
58
        timer = 0;
59
        mpos = 0;
60
    }
61
    else
62
    {
63
        con = "filefound";
64
        fade = fademax;
65
        timer = 0;
66
        mpos = 0;
67
    }
68
}
69
if (con == "nofile")
70
{
71
    if (fade != 0)
72
        fade = lerp(fade, 0, 0.125);
73
    xx = 160 * scale;
74
    yy = 110 * scale;
75
    mspace = 20 * scale;
76
    fadescaled = fade * scale;
77
    drawcolor = merge_color(c_white, c_black, fade / fademax);
78
    draw_set_color(drawcolor);
79
    my_stringset = (global.lang == "en") ? "Would you like to start from Chapter 1?" : "Chapter 1から始めますか?";
80
    draw_set_font(text_font);
81
    draw_set_halign(fa_center);
82
    draw_text_transformed(xx, yy - fadescaled, my_stringset, scale, scale, 0);
83
    draw_set_color(c_white);
84
    if (mpos == 0)
85
        draw_set_color(c_yellow);
86
    else
87
        draw_set_color(c_white);
88
    draw_text_transformed(xx, (((20 * scale) + yy) - fadescaled) + (mspace * 0), yes, scale, scale, 0);
89
    if (mpos == 1)
90
        draw_set_color(c_yellow);
91
    else
92
        draw_set_color(c_white);
93
    draw_text_transformed(xx, (((20 * scale) + yy) - fadescaled) + (mspace * 1), no, scale, scale, 0);
94
    if (mpos == 0)
95
        draw_sprite_ext(spr_heart_launcher, 0, xx - ((string_width(yes) / 2) * scale) - (13 * scale), (((20 * scale) + yy) - fadescaled) + (mspace * mpos) + (4 * scale), scale / 2, scale / 2, 0, c_white, (fademax - fade) / fademax);
96
    if (mpos == 1)
97
        draw_sprite_ext(spr_heart_launcher, 0, xx - ((string_width(no) / 2) * scale) - (13 * scale), (((20 * scale) + yy) - fadescaled) + (mspace * mpos) + (4 * scale), scale / 2, scale / 2, 0, c_white, (fademax - fade) / fademax);
98
    if (up_p())
99
    {
100
        mpos--;
101
        move_noise = true;
102
    }
103
    if (down_p())
104
    {
105
        mpos++;
106
        move_noise = true;
107
    }
108
    mpos = clamp(mpos, 0, 1);
109
    if (button1_p() && timer > 10)
110
    {
111
        select_noise = true;
112
        switch (mpos)
113
        {
114
            case 0:
115
                chaptertoload = 1;
116
                con = "gameload";
117
                break;
118
            case 1:
119
                mpos = 0;
120
                con = "chapterselect";
121
                break;
122
        }
123
    }
124
}
125
if (con == "filefound")
126
{
127
    fade = fademax;
128
    mpos = 0;
129
    timer = 0;
130
    if (highestCompletedChapter == highestUncompletedChapter)
131
        con = "startNextChapter";
132
    else
133
        con = "continueChapter";
134
}
135
if (con == "startNextChapter")
136
{
137
    if (highestCompletedChapter >= latestAvailableChapter)
138
    {
139
        con = "chapterselect";
140
        exit;
141
    }
142
    if (fade != 0)
143
        fade = lerp(fade, 0, 0.125);
144
    xx = 160 * scale;
145
    yy = 110 * scale;
146
    mspace = 20 * scale;
147
    fadescaled = fade * scale;
148
    drawcolor = merge_color(c_white, c_black, fade / fademax);
149
    draw_set_color(drawcolor);
150
    my_stringset = "Chapter " + string(highestCompletedChapter) + " was completed.";
151
    stringset2 = "Play Chapter " + string(highestCompletedChapter + 1);
152
    if (global.lang == "ja")
153
    {
154
        my_stringset = "Chapter " + string(highestCompletedChapter) + "はクリア済みです。";
155
        stringset2 = "Chapter " + string(highestCompletedChapter + 1) + "をプレイ";
156
    }
157
    draw_set_font(text_font);
158
    draw_set_halign(fa_center);
159
    draw_text_transformed(xx, (yy - fadescaled) + (mspace * 0), my_stringset, scale, scale, 0);
160
    if (mpos == 0)
161
        draw_set_color(c_yellow);
162
    else
163
        draw_set_color(c_white);
164
    draw_text_transformed(xx, (yy - fadescaled) + (mspace * 1), stringset2, scale, scale, 0);
165
    if (mpos == 1)
166
        draw_set_color(c_yellow);
167
    else
168
        draw_set_color(c_white);
169
    var select_text = (global.lang == "en") ? "Chapter Select" : "チャプター選択";
170
    draw_text_transformed(xx, (yy - fadescaled) + (mspace * 2), select_text, scale, scale, 0);
171
    if (mpos == 0)
172
        draw_sprite_ext(spr_heart_launcher, 0, xx - ((string_width(stringset2) / 2) * scale) - (13 * scale), (yy - fadescaled) + (mspace * 1) + (4 * scale), scale / 2, scale / 2, 0, c_white, (fademax - fade) / fademax);
173
    if (mpos == 1)
174
        draw_sprite_ext(spr_heart_launcher, 0, xx - ((string_width(select_text) / 2) * scale) - (13 * scale), (yy - fadescaled) + (mspace * 2) + (4 * scale), scale / 2, scale / 2, 0, c_white, (fademax - fade) / fademax);
175
    if (up_p())
176
    {
177
        mpos--;
178
        move_noise = true;
179
    }
180
    if (down_p())
181
    {
182
        mpos++;
183
        move_noise = true;
184
    }
185
    mpos = clamp(mpos, 0, 1);
186
    if (button1_p() && timer > 10)
187
    {
188
        select_noise = true;
189
        switch (mpos)
190
        {
191
            case 0:
192
                chaptertoload = highestCompletedChapter + 1;
193
                con = "gameload";
194
                break;
195
            case 1:
196
                timer = 0;
197
                mpos = 0;
198
                con = "chapterselect";
199
                break;
200
        }
201
    }
202
}
203
if (con == "continueChapter")
204
{
205
    if (highestUncompletedChapter == 0 || highestUncompletedChapter > latestAvailableChapter || highestCompletedChapter > latestAvailableChapter)
206
    {
207
        show_debug_message("highestUncompletedChapter=" + string(highestUncompletedChapter));
208
        show_debug_message("highestCompletedChapter=" + string(highestCompletedChapter));
209
        con = "nofile";
210
        exit;
211
    }
212
    if (fade != 0)
213
        fade = lerp(fade, 0, 0.125);
214
    xx = 160 * scale;
215
    yy = 110 * scale;
216
    mspace = 20 * scale;
217
    fadescaled = fade * scale;
218
    drawcolor = merge_color(c_white, c_black, fade / fademax);
219
    draw_set_color(drawcolor);
220
    my_stringset = "Continue from Chapter " + string(highestUncompletedChapter) + "?";
221
    if (global.lang == "ja")
222
        my_stringset = "Chapter " + string(highestUncompletedChapter) + "から続けますか?";
223
    draw_set_font(text_font);
224
    draw_set_halign(fa_center);
225
    draw_text_transformed(xx, (yy - fadescaled) + (mspace * 0), my_stringset, scale, scale, 0);
226
    if (mpos == 0)
227
        draw_set_color(c_yellow);
228
    else
229
        draw_set_color(c_white);
230
    draw_text_transformed(xx, (yy - fadescaled) + (mspace * 1), yes, scale, scale, 0);
231
    if (mpos == 1)
232
        draw_set_color(c_yellow);
233
    else
234
        draw_set_color(c_white);
235
    draw_text_transformed(xx, (yy - fadescaled) + (mspace * 2), no, scale, scale, 0);
236
    if (mpos == 0)
237
        draw_sprite_ext(spr_heart_launcher, 0, xx - ((string_width(yes) / 2) * scale) - (13 * scale), (yy - fadescaled) + (mspace * 1) + (mspace * mpos) + (4 * scale), scale / 2, scale / 2, 0, c_white, (fademax - fade) / fademax);
238
    if (mpos == 1)
239
        draw_sprite_ext(spr_heart_launcher, 0, xx - ((string_width(no) / 2) * scale) - (13 * scale), (yy - fadescaled) + (mspace * 1) + (mspace * mpos) + (4 * scale), scale / 2, scale / 2, 0, c_white, (fademax - fade) / fademax);
240
    if (up_p())
241
    {
242
        mpos--;
243
        move_noise = true;
244
    }
245
    if (down_p())
246
    {
247
        mpos++;
248
        move_noise = true;
249
    }
250
    mpos = clamp(mpos, 0, 1);
251
    if (button1_p() && timer > 10)
252
    {
253
        timer = 0;
254
        select_noise = true;
255
        switch (mpos)
256
        {
257
            case 0:
258
                chaptertoload = highestUncompletedChapter;
259
                con = "gameload";
260
                break;
261
            case 1:
262
                timer = 0;
263
                mpos = 0;
264
                con = "chapterselect";
265
                break;
266
        }
267
    }
268
}
269
if (con == "chapterselect")
270
{
271
    quit = (global.lang == "en") ? "Quit" : "とじる";
272
    chapterstring = "Chapter";
273
    if (chapterselectinit == 0)
274
    {
275
        fade = fademax;
276
        chapterselectinit = 1;
277
        timer = 0;
278
        mpos = highestCompletedChapter;
279
        if (mpos > (latestAvailableChapter - 1))
280
            mpos = latestAvailableChapter - 1;
281
    }
282
    if (fade != 0)
283
        fade = lerp(fade, 0, 0.125);
284
    fadescaled = fade * scale;
285
    space = 30 * scale;
286
    for (var i = 0; i < 6; i++)
287
        draw_sprite_ext(spr_horzBar, 0, 0, (36 * scale) + (space * i) + (fadescaled / 2), scale, scale, 0, c_white, 1 - (fade / fademax));
288
    draw_set_halign(fa_center);
289
    if (up_p())
290
    {
291
        move_noise = true;
292
        mpos--;
293
        if (mpos > (latestAvailableChapter - 1))
294
            mpos = latestAvailableChapter - 1;
295
    }
296
    if (down_p())
297
    {
298
        move_noise = true;
299
        mpos++;
300
        if (mpos > (latestAvailableChapter - 1))
301
            mpos = global.is_console ? 1 : 7;
302
    }
303
    if (console)
304
        mpos = clamp(mpos, 0, 6);
305
    else
306
        mpos = clamp(mpos, 0, 7);
307
    xx = 35 * scale;
308
    yy = 10 * scale;
309
    mspace = 30 * scale;
310
    var max_options = 7;
311
    for (var i = 0; i < max_options; i++)
312
    {
313
        var mycolor = c_gray;
314
        if (i < latestAvailableChapter)
315
            mycolor = c_white;
316
        if (mpos == i)
317
            mycolor = c_yellow;
318
        mycolor = merge_color(mycolor, c_black, fade / fademax);
319
        draw_sprite_ext(spr_chapterIcon, i, xx + (234 * scale), -fadescaled + yy + (i * 30 * scale), scale, scale, 0, mycolor, 1 - (fade / fademax));
320
        draw_set_color(mycolor);
321
        draw_set_halign(fa_left);
322
        draw_set_font(fnt_main);
323
        draw_text_transformed(xx, -fadescaled + yy + (mspace * i) + (3 * scale), chapterstring + " " + string(i + 1), scale, scale, 0);
324
        draw_set_font(text_font);
325
        draw_set_halign(fa_center);
326
        draw_text_transformed(176 * scale, -fadescaled + yy + (mspace * i) + (3 * scale), chapname[i + 1], scale, scale, 0);
327
        draw_set_halign(fa_left);
328
        draw_set_color(c_white);
329
    }
330
    var heart_xpos = xx - (15 * scale);
331
    var heart_ypos = -fadescaled + yy + (7 * scale) + (mpos * (30 * scale));
332
    if (mpos == 7)
333
    {
334
        heart_ypos -= (5 * scale);
335
        heart_xpos = 130 * scale;
336
    }
337
    draw_sprite_ext(spr_heart_launcher, 0, heart_xpos, heart_ypos, scale / 2, scale / 2, 1, c_white, (fademax - fade) / fademax);
338
    if (!console)
339
    {
340
        var mycolor = c_white;
341
        if (mpos == 7)
342
            mycolor = c_yellow;
343
        mycolor = merge_color(mycolor, c_black, fade / fademax);
344
        draw_set_color(mycolor);
345
        draw_set_halign(fa_center);
346
        draw_text_transformed(160 * scale, -fadescaled + (218 * scale), quit, scale, scale, 0);
347
        draw_set_halign(fa_left);
348
    }
349
    if (button1_p() && timer > 12)
350
    {
351
        select_noise = true;
352
        timer = 0;
353
        if (mpos == 7)
354
        {
355
            game_end();
356
        }
357
        else
358
        {
359
            con = "gameloadConfirm";
360
            confirm_choice_index = 0;
361
            chaptertoload = mpos + 1;
362
        }
363
    }
364
}
365
else if (con == "gameloadConfirm")
366
{
367
    stringPlay = (global.lang == "en") ? "Play" : "プレイする";
368
    stringDoNot = (global.lang == "en") ? "Do Not" : "しない";
369
    space = 30 * scale;
370
    for (var i = 0; i < 6; i++)
371
        draw_sprite_ext(spr_horzBar, 0, 0, (36 * scale) + (space * i) + (fadescaled / 2), scale, scale, 0, c_white, 1 - (fade / fademax));
372
    draw_set_halign(fa_center);
373
    if (console)
374
        mpos = clamp(mpos, 0, 6);
375
    else
376
        mpos = clamp(mpos, 0, 7);
377
    xx = 35 * scale;
378
    yy = 10 * scale;
379
    mspace = 30 * scale;
380
    if (left_p())
381
    {
382
        move_noise = true;
383
        confirm_choice_index = ((confirm_choice_index - 1) < 0) ? 1 : 0;
384
    }
385
    if (right_p())
386
    {
387
        move_noise = true;
388
        confirm_choice_index = ((confirm_choice_index + 1) > 1) ? 0 : 1;
389
    }
390
    var heart_xpos = (116 * scale) + (confirm_choice_index * 75 * scale);
391
    if (global.lang == "ja")
392
        heart_xpos = (106 * scale) + (confirm_choice_index * 95 * scale);
393
    var heart_ypos = yy + (7 * scale) + (mpos * 30 * scale);
394
    draw_sprite_ext(spr_heart_launcher, 0, heart_xpos, heart_ypos, scale / 2, scale / 2, 0, c_white, (fademax - fade) / fademax);
395
    var max_options = 7;
396
    for (var i = 0; i < max_options; i++)
397
    {
398
        var mycolor = c_gray;
399
        if (i < latestAvailableChapter)
400
            mycolor = c_white;
401
        if (mpos == i)
402
            mycolor = c_yellow;
403
        mycolor = merge_color(mycolor, c_black, fade / fademax);
404
        draw_sprite_ext(spr_chapterIcon, i, xx + (234 * scale), (-fade * scale) + yy + (i * 30 * scale), scale, scale, 0, mycolor, 1 - (fade / fademax));
405
        draw_set_color(mycolor);
406
        draw_set_halign(fa_left);
407
        draw_set_font(fnt_main);
408
        draw_text_transformed(xx, -fade + yy + (mspace * i) + (3 * scale), chapterstring + " " + string(i + 1), scale, scale, 0);
409
        draw_set_font(text_font);
410
        draw_set_halign(fa_center);
411
        if (mpos == i)
412
        {
413
            var play_color = (confirm_choice_index == 0) ? c_yellow : c_white;
414
            draw_set_color(play_color);
415
            if (global.lang == "en")
416
                draw_text_transformed(146 * scale, (-fade * scale) + yy + (mspace * i) + (3 * scale), stringPlay, scale, scale, 0);
417
            else
418
                draw_text_transformed(156 * scale, (-fade * scale) + yy + (mspace * i) + (3 * scale), stringPlay, scale, scale, 0);
419
            var not_color = (confirm_choice_index == 1) ? c_yellow : c_white;
420
            draw_set_color(not_color);
421
            if (global.lang == "en")
422
                draw_text_transformed(226 * scale, (-fade * scale) + yy + (mspace * i) + (3 * scale), stringDoNot, scale, scale, 0);
423
            else
424
                draw_text_transformed(236 * scale, (-fade * scale) + yy + (mspace * i) + (3 * scale), stringDoNot, scale, scale, 0);
425
        }
426
        else
427
        {
428
            draw_text_transformed(176 * scale, -fade + yy + (mspace * i) + (3 * scale), chapname[i + 1], scale, scale, 0);
429
        }
430
        draw_set_halign(fa_left);
431
        draw_set_color(c_white);
432
    }
433
    if (!console)
434
    {
435
        var mycolor = c_white;
436
        if (mpos == 7)
437
            mycolor = c_yellow;
438
        mycolor = merge_color(mycolor, c_black, fade / fademax);
439
        draw_set_color(mycolor);
440
        draw_set_halign(fa_center);
441
        draw_text_transformed(160 * scale, (-fade * scale) + (218 * scale), quit, scale, scale, 0);
442
        draw_set_halign(fa_left);
443
    }
444
    if (button1_p() && timer > 12)
445
    {
446
        timer = 0;
447
        select_noise = true;
448
        if (confirm_choice_index == 0)
449
            con = "gameload";
450
        else
451
            con = "chapterselect";
452
    }
453
    if (button2_p() && timer > 12)
454
    {
455
        timer = 0;
456
        select_noise = true;
457
        con = "chapterselect";
458
    }
459
}
460
if (con == "gameload")
461
{
462
    if (spr_aftereffect == 0)
463
    {
464
        spr_aftereffect = sprite_create_from_surface(application_surface, 0, 0, room_width, room_height, false, false, 0, 0);
465
        sprite_set_offset(spr_aftereffect, room_width / 2, room_height / 2);
466
        yy = room_height / 2;
467
    }
468
    if (chaptertoload != 0)
469
    {
470
        audio_sound_gain(loop, 0, 500);
471
        switch (chaptertoload)
472
        {
473
            case 1:
474
                audio_play_sound(AUDIO_APPEARANCE, 50, 0);
475
                break;
476
            case 2:
477
                audio_play_sound(snd_queen_bitcrushlaugh, 50, 0);
478
                break;
479
        }
480
        chaptertoload_temp = chaptertoload;
481
        chaptertoload = 0;
482
        alarm[2] = 60;
gml_Object_obj_CHAPTER_SELECT_Alarm_2.gml

audio_stop_all(); global.lang_loaded = ""; if (reload_textures) { _tex_array = texturegroup_get_textures("chapter_0" + string(chaptertoload_temp)); for (var i = 0; i < array_length(_tex_array); i++) texture_prefetch(_tex_array[i]); } switch (chaptertoload_temp) { case 1: room_goto(ROOM_INITIALIZE_ch1 ); break; case 2: room_goto(ROOM_INITIALIZE ); break; } var _tex_array = texturegroup_get_textures("chapter_select"); for (var i = 0; i < array_length(_tex_array); i++) texture_flush(_tex_array[i]);
483
        alarm[3] = 50;
gml_Object_obj_CHAPTER_SELECT_Alarm_3.gml

if (global.is_console) { if (chaptertoload_temp == 2) { chapter_is_loading = true; var car = scr_dark_marker(320 - sprite_get_width(spr_dog_sleep_launcher), 240 - (sprite_get_height(spr_dog_sleep_launcher) * 2), spr_dog_sleep_launcher); car.image_speed = 0.15; } }
484
    }
485
    draw_sprite_ext(spr_aftereffect, 0, room_width / 2, yy, xscale, yscale, 0, c_white, fadeout);
486
    fadeout = lerp(fadeout, 0, 0.125);
487
    xscale *= 0.95;
488
    yscale *= 0.99;
489
    yy *= 0.99;
490
}
491
if (move_noise)
492
{
493
    move_noise = false;
494
    audio_play_sound(snd_menumove, 50, 0);
495
}
496
if (select_noise)
497
{
498
    select_noise = false;
499
    audio_play_sound(snd_select, 50, 0);
500
}