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