Deltarune 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_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(""); return _array; }
(arg0, arg1, arg2, arg3)
2
{
3
    var _array = arg2;
4
    var _ascending = arg3;
5
    var _array_length = array_length_1d(arg0);
6
    var _distance_array;
7
    for (i = 0; i < _array_length; i++)
8
        _distance_array[i] = point_distance(arg0, arg1, _array[i].x, _array[i].y);
9
    var _tempValue = 0;
10
    var _loopAgain = true;
11
    var _emergencyStop = 0;
12
    while (_loopAgain == true && _emergencyStop < 100)
13
    {
14
        _loopAgain = false;
15
        _emergencyStop++;
16
        for (i = 1; i < _array_length; i++)
17
        {
18
            if (_distance_array[i] == _distance_array[i - 1])
19
            {
20
                continue;
21
            }
22
            else if (_ascending == (_distance_array[i] < _distance_array[i - 1]))
23
            {
24
                _loopAgain = true;
25
                _tempValue = _distance_array[i - 1];
26
                _distance_array[i - 1] = _distance_array[i];
27
                _distance_array[i] = _tempValue;
28
                _tempValue = _array[i - 1];
29
                _array[i - 1] = _array[i];
30
                _array[i] = _tempValue;
31
            }
32
        }
33
    }
34
    if (_emergencyStop >= 100)
35
        scr_debug_print
scr_debug_print

function scr_debug_print(arg0) { if (!scr_debug()) exit; if (!instance_exists(obj_debug_gui)) { instance_create(__view_get(e__VW.XView, 0) + 10, __view_get(e__VW.YView, 0) + 10, obj_debug_gui); obj_debug_gui.depth = -9999; } obj_debug_gui.newtext = arg0; with (obj_debug_gui) { message[messagecount] = newtext; newtext = ""; timer[messagecount] = 90 - totaltimer; totaltimer += timer[messagecount]; messagecount++; debugmessage = message[0]; for (i = 1; i < messagecount; i++) debugmessage += ("#" + message[i]); } } enum e__VW { XView, YView, WView, HView, Angle, HBorder, VBorder, HSpeed, VSpeed, Object, Visible, XPort, YPort, WPort, HPort, Camera, SurfaceID }
("");
36
    return _array;
37
}