Deltarune (Chapter 4) script viewer

← back to main script listing

gml_GlobalScript_scr_sort_by_distance

(view raw script w/o annotations or w/e)
1
function 
scr_sort_by_distance
scr_sort_by_distance

function
scr_sort_by_distance(arg0, arg1, arg2, arg3)
{ var _array = arg2; var _ascending = arg3; var _array_length = array_length(arg0); for (i = 0; i < _array_length; i++) _array[i].sort_distance = point_distance(arg0, arg1, _array[i].x, _array[i].y); if (_ascending) { array_sort(_array, function(arg0, arg1) { return arg0.sort_distance - arg1.sort_distance; }); } else { array_sort(_array, function(arg0, arg1) { return arg1.sort_distance - arg0.sort_distance; }); } return _array; } function scr_sort_by_distance_old(arg0, arg1, arg2, arg3) { var _array = arg2; var _ascending = arg3; var _array_length = array_length_1d(arg0); var _distance_array; for (i = 0; i < _array_length; i++) _distance_array[i] = point_distance(arg0, arg1, _array[i].x, _array[i].y); var _tempValue = 0; var _loopAgain = true; var _emergencyStop = 0; while (_loopAgain == true && _emergencyStop < 100) { _loopAgain = false; _emergencyStop++; for (i = 1; i < _array_length; i++) { if (_distance_array[i] == _distance_array[i - 1]) { continue; } else if (_ascending == (_distance_array[i] < _distance_array[i - 1])) { _loopAgain = true; _tempValue = _distance_array[i - 1]; _distance_array[i - 1] = _distance_array[i]; _distance_array[i] = _tempValue; _tempValue = _array[i - 1]; _array[i - 1] = _array[i]; _array[i] = _tempValue; } } } if (_emergencyStop >= 100)
scr_debug_print("EMERGENCY STOP HAD TO BE CALLED (BAD)");
return _array; }
(arg0, arg1, arg2, arg3)
2
{
3
    var _array = arg2;
4
    var _ascending = arg3;
5
    var _array_length = array_length(arg0);
6
    for (i = 0; i < _array_length; i++)
7
        _array[i].sort_distance = point_distance(arg0, arg1, _array[i].x, _array[i].y);
8
    if (_ascending)
9
    {
10
        array_sort(_array, function(arg0, arg1)
11
        {
12
            return arg0.sort_distance - arg1.sort_distance;
13
        });
14
    }
15
    else
16
    {
17
        array_sort(_array, function(arg0, arg1)
18
        {
19
            return arg1.sort_distance - arg0.sort_distance;
20
        });
21
    }
22
    return _array;
23
}
24
25
function scr_sort_by_distance_old(arg0, arg1, arg2, arg3)
26
{
27
    var _array = arg2;
28
    var _ascending = arg3;
29
    var _array_length = array_length_1d(arg0);
30
    var _distance_array;
31
    for (i = 0; i < _array_length; i++)
32
        _distance_array[i] = point_distance(arg0, arg1, _array[i].x, _array[i].y);
33
    var _tempValue = 0;
34
    var _loopAgain = true;
35
    var _emergencyStop = 0;
36
    while (_loopAgain == true && _emergencyStop < 100)
37
    {
38
        _loopAgain = false;
39
        _emergencyStop++;
40
        for (i = 1; i < _array_length; i++)
41
        {
42
            if (_distance_array[i] == _distance_array[i - 1])
43
            {
44
                continue;
45
            }
46
            else if (_ascending == (_distance_array[i] < _distance_array[i - 1]))
47
            {
48
                _loopAgain = true;
49
                _tempValue = _distance_array[i - 1];
50
                _distance_array[i - 1] = _distance_array[i];
51
                _distance_array[i] = _tempValue;
52
                _tempValue = _array[i - 1];
53
                _array[i - 1] = _array[i];
54
                _array[i] = _tempValue;
55
            }
56
        }
57
    }
58
    if (_emergencyStop >= 100)
59
        
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("EMERGENCY STOP HAD TO BE CALLED (BAD)");
60
    return _array;
61
}