From e9fb1bfa86049b5b78846ff8c26e82f46d068851 Mon Sep 17 00:00:00 2001 From: An Orbit <68935009+orbit-loona@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:07:08 -0400 Subject: [PATCH] prompt command to delete pixels --- mods/a_mod_by_alice.js | 105 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 104 insertions(+), 1 deletion(-) diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js index b30b72e2..4441d84b 100644 --- a/mods/a_mod_by_alice.js +++ b/mods/a_mod_by_alice.js @@ -13186,7 +13186,11 @@ Pixel size (rendering only): (Use if the save looks cut o var _width = getComputedStyle(statsDiv).width; if(_width !== null) { _width = parseFloat(_width.match(/[\d\/]+/)); - if(_width <= 752) { statsDiv.style["font-size"] = "50%" } + if(_width <= 752) { + statsDiv.style["font-size"] = "50%" + } else if(_width <= 940) { + statsDiv.style["font-size"] = "75%" + } } } //Moved to window.onload where gameDiv should be guaranteed to exist @@ -27072,6 +27076,105 @@ ${eightSpaces}Example full decor definition: bird:0.04:10:#FF0000,#FFFF00,#00FF0 }; inputElement === "all" ? alertIfOutput(alertOutput,`Set ${property} of ${setCount} pixels to ${value}.`) : alertIfOutput(alertOutput,`Set ${property} of ${setCount} ${inputElement} pixels to ${value}.`) return true; + case "deleteall": + inputAsArray = inputAsArray.join(" ").replace("deleteall","delete all").split(" "); + //fall through to delete + case "delete": + if(inputAsArray.length < 2) { + alertIfError(alertError,"Usage: delete [element] \nDon't include framing characters []<>.\nThe element can be \"all\" to clear the canvas.\nNote: Strings can't have spaces because spaces are the separator used in the parsing split().\nArguments in [brackets] are required and ones in are optional."); + return false; + }; + var inputElement = inputAsArray[1]; + + var probability; + if(inputAsArray[2]) { + probability = inputAsArray[2]; + if(probability.match(/(%|cent|per_?hundred|ph)$/i)) { + probability = probability.match(/\d+(\.\d+|)/)?.[0]; + if(!probability) { + probability = 1 + } else { + probability = parseFloat(probability) / 100 + } + } else if(probability.match(/(‰|mille|per_?thousand)$/i)) { + probability = probability.match(/\d+(\.\d+|)/)?.[0]; + if(!probability) { + probability = 1 + } else { + probability = parseFloat(probability) / 1000 + } + } else if(probability.match(/(‱|myriad|per_?ten_?thousand|basis_?point|bp)$/i)) { + probability = probability.match(/\d+(\.\d+|)/)?.[0]; + if(!probability) { + probability = 1 + } else { + probability = parseFloat(probability) / 10000 + } + } else if(probability.match(/(ppm|parts_?per_?million)$/i)) { + probability = probability.match(/\d+(\.\d+|)/)?.[0]; + if(!probability) { + probability = 1 + } else { + probability = parseFloat(probability) / 1e6 + } + } else if(probability.match(/(ppb|parts_?per_?billion)$/i)) { + probability = probability.match(/\d+(\.\d+|)/)?.[0]; + if(!probability) { + probability = 1 + } else { + probability = parseFloat(probability) / 1e9 + } + } else if(probability.match(/(ppt|parts_?per_?trillion)$/i)) { + probability = probability.match(/\d+(\.\d+|)/)?.[0]; + if(!probability) { + probability = 1 + } else { + probability = parseFloat(probability) / 1e12 + } + } else if(probability.match(/(ppq|parts_?per_?quadrillion)$/i)) { + probability = probability.match(/\d+(\.\d+|)/)?.[0]; + if(!probability) { + probability = 1 + } else { + probability = parseFloat(probability) / 1e15 + } + } else if(probability.match(/\d\.?[\/÷]\.?\d/)) { + probability = probability.split(/[\/÷]/).map(x => parseFloat(x)); + if(isNaN(probability[0]) || isNaN(probability[1])) { + probability = 1 + } else { + probability = probability[0] / probability[1] + } + } else { + var parsedProbability = parseFloat(probability); + if(isNaN(parsedProbability)) { + probability = 1 + } else { + probability = parsedProbability; + if(probability > 1) { probability /= 100 } + } + } + } else { + probability = 1 + }; + + //Actual setting code; + var deleteCount = 0; + for (var i = 1; i < width; i++) { + for (var j = 1; j < height; j++) { + if (!isEmpty(i,j)) { + //console.log("Pixel (" + i + "," + j + ") exists") + if(pixelMap[i][j].element === inputElement || inputElement === "all") { + if(Math.random() < probability) { + deletePixel(i,j); + deleteCount++ + } + } + } + } + }; + inputElement === "all" ? alertIfOutput(alertOutput,`Deleted ${deleteCount} pixels.`) : alertIfOutput(alertOutput,`Deleted ${deleteCount} ${inputElement} pixels.`) + return true; case "test": alertIfOutput(alertOutput,"pong"); console.log("qwertyuiopasdfghjklzxcvbnm");