diff --git a/mods/prop.js b/mods/prop.js index df15a723..508ad8c0 100644 --- a/mods/prop.js +++ b/mods/prop.js @@ -1,6 +1,10 @@ propProperty = "element"; propValue = "sand"; propType = "string"; +numberAdjusterProperty = "temp"; +numberAdjusterValue = 1; +numberAdjusterMode = "add"; +numberAdjusterVerb = "adding"; stringSynonyms = [ "string", "str", "st", "s" ]; numberSynonyms = [ "number", "num", "nm", "nu", "nb", "integer", "int", "i", "it", "float", @@ -38,7 +42,7 @@ document.addEventListener("keydown", function(e) { //prop prompt listener // , = propPrompt() if (e.keyCode == 188) { e.preventDefault(); - propPrompt(); + shiftDown ? numberAdjusterPrompt() : propPrompt(); }; }); @@ -168,18 +172,113 @@ function propPrompt() { return false; }; updatePropDescription(); + currentElement = "prop"; }; elements.prop = { color: "#ff7f00", tool: function(pixel) { - pixel[propProperty] = propValue; + if(propProperty === "element") { + pixel[propProperty] = propValue; + pixel.temp = (elements[propValue].temp || pixel.temp); + } else { + pixel[propProperty] = propValue; + }; pixelTempCheck(pixel); }, category: "tools", - desc: `Sets properties of pixels.
Currently setting ${propProperty} to ${propValue} (${propType}).
Press [\"] or click here to open the property tool prompt.`, + desc: `Sets properties of pixels.
Currently setting ${propProperty} to ${propValue} (${propType}).
Press [,] or click here to open the property tool prompt.`, }; function updatePropDescription() { - elements.prop.desc = `Sets properties of pixels.
Currently setting ${propProperty} to ${propValue} (${propType}).
Press [\"] or click here to open the property tool prompt.`; + elements.prop.desc = `Sets properties of pixels.
Currently setting ${propProperty} to ${propValue} (${propType}).
Press [,] or click here to open the property tool prompt.`; +}; + +function numberAdjusterPrompt() { + numberAdjusterProperty = prompt("Enter the property you want to change"); + numberAdjusterValue = prompt("Enter the value you want to use"); + numberAdjusterMode = prompt("Enter \"set\" to set the property to the value,\nor \"add\" to add the value to the property."); + + //property check + //console.log("Null property path"); + if(numberAdjusterProperty === "" || numberAdjusterProperty === null) { + alert("No property was specified! Defaulting to temp."); + numberAdjusterProperty = "temp"; + //console.log(numberAdjusterProperty); + }; + //console.log("Property: " + numberAdjusterProperty); + + //value check + if(isNaN(parseFloat(numberAdjusterValue))) { + //console.log("Invalid value path"); + //console.log(numberAdjusterValue); + //empty string + if(numberAdjusterValue === "" || numberAdjusterValue === null) { + //console.log("Null value path"); + alert("No value was specified! Defaulting to 1"); + numberAdjusterValue = 1; + //console.log(numberAdjusterValue); + } else { + //console.log("NaN value path"); + alert("Invalid value! The value must be a number (defaulting to 1)"); + numberAdjusterValue = 1; + //console.log(numberAdjusterValue); + }; + }; + numberAdjusterValue = parseFloat(numberAdjusterValue); + //console.log("Value: " + numberAdjusterValue); + + //mode check + if(!["set","add"].includes(numberAdjusterMode.toLowerCase())) { + //console.log("Invalid mode path"); + //console.log(numberAdjusterMode); + //empty string + if(numberAdjusterMode === "" || numberAdjusterMode === null) { + //console.log("Null mode path"); + alert("No mode was specified! Defaulting to \"add\"."); + numberAdjusterMode = "add"; + //console.log(numberAdjusterMode); + } else { + //console.log("Unknown mode path"); + alert("Invalid mode! Only the values \"set\" or \"add\" are accepted (defaulting to \"add\")."); + numberAdjusterMode = "add"; + //console.log(numberAdjusterMode); + }; + }; + numberAdjusterMode = numberAdjusterMode.toLowerCase(); + //console.log("Mode: " + numberAdjusterMode); + + if(numberAdjusterMode === "set") { + numberAdjusterVerb = "setting"; + } else if(numberAdjusterMode === "add") { + numberAdjusterVerb = "adding"; + } else { + numberAdjusterVerb = "doing something probably invalid with"; + } + updateNumberAdjusterDescription(); + currentElement = "number_adjuster"; +}; + +elements.number_adjuster = { + color: "#7fff00", + tool: function(pixel) { + if(numberAdjusterProperty !== "element") { + //console.log(numberAdjusterValue); + if(numberAdjusterMode === "set") { + pixel[numberAdjusterProperty] = numberAdjusterValue; + } else if(numberAdjusterMode === "add") { + if(typeof(pixel[numberAdjusterProperty]) === "undefined") { + pixel[numberAdjusterProperty] = 0; + }; + pixel[numberAdjusterProperty] += numberAdjusterValue; + }; + pixelTempCheck(pixel); + }; + }, + category: "tools", + desc: `Sets or adds to numeric properties of pixels.
Currently ${numberAdjusterVerb} ${numberAdjusterProperty} to ${numberAdjusterValue}.
Press [Shift+,] or click here to open the adjuster tool prompt.`, +}; + +function updateNumberAdjusterDescription() { + elements.number_adjuster.desc = `Sets or adds to numeric properties of pixels.
Currently ${numberAdjusterVerb} ${numberAdjusterProperty} to ${numberAdjusterValue}.
Press [Shift+,] or click here to open the adjuster tool prompt.`; };