function includesArray(parentArray, testArray) {
    for (let i = 0; i < parentArray.length; i++) {
        if (parentArray[i].every(function(value, index) { return value === testArray[index]})) {
            return true;
        }
    }
    return false;
}

elements.portal_in = {
	color: "#ee7f00",
	tick: function(pixel) {
		if(!pixel.portalArray) { pixel.portalArray = [] }
		if(!Array.isArray(pixel.portalArray)) { pixel.portalArray = [] }
		for (var i = 1; i < width; i++) {
			for (var j = 1; j < height; j++) {
				if (!isEmpty(i,j)) {
					if(pixelMap[i][j].element == "portal_out") {
						if(!includesArray(pixel.portalArray,[i,j])) {
							pixel.portalArray.push([i,j])
						}
					}
				}
				if (isEmpty(i,j)) {
					if(includesArray(pixel.portalArray,[i,j])) {
						pixel.portalArray = pixel.portalArray.filter(dat => !includesArray(pixel.portalArray,[i,j]))

					}
				}
			}
		}
		if(pixel.portalArray.length > 0) {
			randomDestination = pixel.portalArray[Math.floor((Math.random() * pixel.portalArray.length))]
			if(!isEmpty(pixel.x-1,pixel.y) && !outOfBounds(pixel.x-1,pixel.y)) {
				if(pixelMap[pixel.x-1][pixel.y].element != pixel.element) {
					tryMove(pixelMap[pixel.x-1][pixel.y],(randomDestination[0] + 1),(randomDestination[1]))
				}
			}
			if(!isEmpty(pixel.x+1,pixel.y) && !outOfBounds(pixel.x+1,pixel.y)) {
				if(pixelMap[pixel.x+1][pixel.y].element != pixel.element) {
					tryMove(pixelMap[pixel.x+1][pixel.y],(randomDestination[0] - 1),(randomDestination[1]))
				}
			}
			if(!isEmpty(pixel.x,pixel.y-1) && !outOfBounds(pixel.x,pixel.y-1)) {
				if(pixelMap[pixel.x][pixel.y-1].element != pixel.element) {
					tryMove(pixelMap[pixel.x][pixel.y-1],(randomDestination[0]),(randomDestination[1] + 1))
				}
			}
			if(!isEmpty(pixel.x,pixel.y+1) && !outOfBounds(pixel.x,pixel.y+1)) {
				if(pixelMap[pixel.x][pixel.y+1].element != pixel.element) {
					tryMove(pixelMap[pixel.x][pixel.y+1],(randomDestination[0]),(randomDestination[1] - 1))
				}
			}
		}
	},
	category: "machines",
	state: "solid",
	portalArray: [],
},

elements.portal_out = {
	color: "#2222ee",
	behavior: behaviors.WALL,
	category: "machines",
	state: "solid",
}
