diff --git a/archive.txt b/archive.txt index deaef04e..1b97ab52 100644 --- a/archive.txt +++ b/archive.txt @@ -4,7 +4,7 @@ // If elem1 exists if (elements[key].reactions[reaction].elem1) { // If elem1 is an array, loop through each element, else check once. Don't delete if it === null - if (Array.isArray(elements[key].reactions[reaction].elem1)) { + if (Array.isArray(elements[key].reactions[reaction].elem1)) { for (var i = 0; i < elements[key].reactions[reaction].elem1.length; i++) { if (elements[key].reactions[reaction].elem1[i] && !elements[elements[key].reactions[reaction].elem1[i]]) { elements[key].reactions[reaction].elem1.splice(i,1); @@ -101,4 +101,4 @@ else { if (elements[key].breakInto[i]!==null && !elements[elements[key].breakInto]) { delete elements[key].breakInto; } } - } \ No newline at end of file + } diff --git a/index.html b/index.html index 64be082e..f571f22b 100644 --- a/index.html +++ b/index.html @@ -13048,6 +13048,10 @@ onAddElementList = []; function onAddElement(callback) { onAddElementList.push(callback); } +validateMovesList = []; +function validateMoves(callback) { + validateMovesList.push(callback); +} canvasLayers = { // bg: document.createElement("canvas"), pixels: document.createElement("canvas"), @@ -13764,6 +13768,16 @@ function langKey(key,fallback,template) { function tryMove(pixel,nx,ny,leaveBehind,force) { if (pixel.drag && force !== true) { return true; } if (pixel.del) { return false } + if (validateMovesList.length !== 0 && force !== true) { + for (let i = 0; i < validateMovesList.length; i++) { + const result = validateMovesList[i](pixel,nx,ny); + if (result === false) return false; + else if (Array.isArray(result)) { + nx = result[0]; + ny = result[1]; + } + } + } var info = elements[pixel.element]; var oob = outOfBounds(nx,ny); if (isEmpty(nx,ny,false,oob)) { // If coords is empty, move to coords @@ -18576,7 +18590,7 @@ window.onload = function() {