From de0dc088ab4d928c77587b9d0e3a7d7663e3f94a Mon Sep 17 00:00:00 2001 From: O-01-67 <68935009+O-01-67@users.noreply.github.com> Date: Sat, 9 Jul 2022 22:25:20 -0400 Subject: [PATCH] (Read description) Adds a find mode It modifies drawPixels to add a "find mode" that causes the currently selected element to pulsate red and yellow. To toggle it, pull up the info for the element "find_toggle" and click the magenta text in the description. --- mods/find.js | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 mods/find.js diff --git a/mods/find.js b/mods/find.js new file mode 100644 index 00000000..7a72a8bc --- /dev/null +++ b/mods/find.js @@ -0,0 +1,80 @@ +var style = document.createElement('style'); +style.type = 'text/css'; +style.id = 'findStatusStylesheet'; +style.innerHTML = '.findStatus { color: #E11; text-decoration: none; }'; +document.getElementsByTagName('head')[0].appendChild(style); + +find = false; + +findElement = "sand"; + +findColorPulseTimer = 0; + +function marasi(number) { + return Math.min(255,Math.round(Math.abs(Math.sin(number) * 255))); +}; + +function updateFindDescription() { + elements.find_toggle.desc = "I'm running out of keybinds

If this text is green or underlined, find mode is on. Click here to toggle find mode. This highlights the currently selected element."; +}; + +function toggleFind() { + if(find != true) { + find = true; + document.getElementById("findStatusStylesheet").innerHTML = '.findStatus { color: #1E1; text-decoration: underline; }'; //Displayed info doen't update until it's pulled up again, so I'm using CSS to dynamically change the color of an element. + } else { + find = false; + document.getElementById("findStatusStylesheet").innerHTML = '.findStatus { color: #E11; text-decoration: none; }'; + }; + updateFindDescription(); +}; + +oldDrawPixels2 = drawPixels; + +suffixFunction2 = function() { + // newCurrentPixels = shuffled currentPixels + var newCurrentPixels = currentPixels; + var pixelsFirst = []; + var pixelsLast = []; + var canvas = document.getElementById("game"); + var ctx = canvas.getContext("2d"); + + for (var i = 0; i < newCurrentPixels.length; i++) { + pixel = newCurrentPixels[i]; + //if (pixelMap[pixel.x][pixel.y] == undefined || currentPixels.indexOf(pixel) == -1) {continue} + if (pixel.del) {continue}; + if (elements[pixel.element].isGas) { + pixelsLast.push(pixel); + } else { + pixelsFirst.push(pixel); + }; + }; + + var pixelDrawList = pixelsFirst.concat(pixelsLast); + for (var i = 0; i < pixelDrawList.length; i++) { + pixel = pixelDrawList[i]; + if (pixelMap[pixel.x][pixel.y] == undefined) {continue}; + if (find === true) { //if in find view + if(pixel.element === currentElement) { + ctx.fillStyle = "rgb(255," + marasi(findColorPulseTimer / 10) + ",0)"; + ctx.fillRect(pixel.x*pixelSize, pixel.y*pixelSize, pixelSize, pixelSize); + }; + }; + }; + + findColorPulseTimer++; +} + +drawPixels = function(forceTick=false) { + oldDrawPixels2(forceTick); + suffixFunction2(); +}; + +elements.find_toggle = { + color: ["#000000", "#000000", "#000000", "#000000", "#ff0000", "#ff0000", "#ff0000", "#ff0000"], + name: "find toggle (look at info)", + behavior: behaviors.SELFDELETE, + category: "tools", + excludeRandom: true, + desc: "I'm running out of keybinds

If this text is green or underlined, find mode is on. Click here to toggle find mode. This highlights the currently selected element.", +}; \ No newline at end of file