Recreating GameMaker's 2D arrays, now that they're deprecated.

June 1, 2023 ยท View on GitHub

// Made by TabularElf

/// @func array_2d_height /// @param 2DArray function array_2d_height(_array) { return array_length(_array); }

/// @func array_2d_length /// @param 2DArray /// @param [Height] function array_2d_length(_array, _n = 0) { // Used to determine _n as an optional argument return array_length(_array[_n]);
}

/// @func array_2d_create /// @param Height /// @param Length /// @param [Value] function array_2d_create(_height, _length, _value = 0) { var _array; array[_height] = 0; for(var _i = 0; _i < _height; ++_i) { _array[_i] = array_create(_length, _value); } return _array; }

/// @func array_2d_resize /// @param 2DArray /// @param Height /// @param [Length] function array_2d_resize(_array, _height, _length) { // Resize height array_resize(_array, _height);

    // Resize Lengths 
if (_length != undefined) {
	for(var _i = 0; _i < _height; ++_i) {
		if (!is_array(_array[@ _i])) {
			_array[@ _i] = array_create(_length);
		} else {
			array_resize(_array[@ _i], _length);
		}
	}
}

}

/// @func array_2d_get /// @param array2D /// @param height /// @param length function array_2d_get(_array2D, _height, _length) { return _array2D[_height][_length]; }

/// @func array_2d_set /// @param array2D /// @param height /// @param length /// @param value function array_2d_set(_array2D, _height, _length, _value) { _array2D[@ _height][@ _length] = _value; }