From bd013db7f30f067c53b6bdbed40c0a0e19a1822c Mon Sep 17 00:00:00 2001 From: "Laetitia (O-01-67)" <68935009+O-01-67@users.noreply.github.com> Date: Sat, 12 Nov 2022 13:47:16 -0500 Subject: [PATCH] Use upcoming library --- mods/random_rocks.js | 436 ++++++++++++++++--------------------------- 1 file changed, 160 insertions(+), 276 deletions(-) diff --git a/mods/random_rocks.js b/mods/random_rocks.js index ad995c58..b2a14b1a 100644 --- a/mods/random_rocks.js +++ b/mods/random_rocks.js @@ -1,280 +1,164 @@ -urlParams = new URLSearchParams(window.location.search); +var modName = "mods/random_rocks.js"; +var libraryMod = "mods/code_library.js"; -if(urlParams.get('rockAmount') != null) { //null check - rockAmount = urlParams.get('rockAmount') - if(isNaN(rockAmount) || rockAmount === "" || rockAmount === null) { //NaN check - rockAmount = 10 - } - rockAmount = parseInt(rockAmount) - if(rockAmount > 10000) { - alert("Maximum amount of rocks is 10000.\nOnly 10000 rocks were added.") - } else if(rockAmount < 1) { - alert("Minimum amount of rocks is 1.\n1 rock was added.") +if(enabledMods.includes(libraryMod)) { + if(urlParams.get('rockAmount') != null) { //null check + rockAmount = urlParams.get('rockAmount') + if(isNaN(rockAmount) || rockAmount === "" || rockAmount === null) { //NaN check + rockAmount = 10 + } + rockAmount = parseInt(rockAmount) + if(rockAmount > 10000) { + alert("Maximum amount of rocks is 10000.\nOnly 10000 rocks were added.") + } else if(rockAmount < 1) { + alert("Minimum amount of rocks is 1.\n1 rock was added.") + } + rockAmount = Math.min(10000,Math.max(rockAmount,1)) + } else { + rockAmount = 10 + } + + if(urlParams.get('makeRockString') !== null) { //if the variable exists at all + makeRockString = true + } else { //if it doesn't (and it returns null) + makeRockString = false + } + + //arbitrarily picked + const initialArrayR = ["m","n","p","t","ch","k","b","d","j","g","f","th","s","sh","h","l","r","y","w","z","sp","st","sk","sl","spl","stl","skl","sr","spr","str","skr","sl","fl","fr","pl","pr","tl","tr","kl","kr","shr","fl","fr","thr"] //:eggTF: + const vowelArrayR = ["a","e","i","o","u","ay","ee","ie","oa","ew","oo","oi","ow"] //:eggTF: + const medialArrayR = ["m","n","p","t","k","b","d","g","f","th","s","sh","h","l","r","y","z","sp","st","sk","sl","spl","stl","skl","sr","spr","str","skr","sl","fl","fr","pl","pr","tl","tr","kl","kr","shr","fl","fr","thr"] //:eggTF: + const finalArrayR = ["m","n","p","t","k","b","d","g","f","th","s","sh","l","r","y","z","sp","st","sk","sl","spl","stl","skl","sr","spr","str","skr","pl","pr","tl","tr","bl","vr"] //:eggTF: + + function generateName() { + //these are picked arbitrarily + + //console.log("getting random type") + var randomInt1 = randomIntegerFromZeroToValue(6) + + //console.log("generating type " + randomInt1) + if(randomInt1 == 0) { + var randomName = randomChoice(initialArrayR) + randomChoice(vowelArrayR) + randomChoice(finalArrayR) + //console.log("generated T" + randomInt1 + " name") + } else if(randomInt1 == 1) { + var randomName = randomChoice(initialArrayR) + randomChoice(vowelArrayR) + randomChoice(medialArrayR) + randomChoice(vowelArrayR) + randomChoice(finalArrayR) + //console.log("generated T" + randomInt1 + " name") + } else if(randomInt1 == 2) { + var randomName = randomChoice(initialArrayR) + randomChoice(vowelArrayR) + randomChoice(finalArrayR) + "e" + //console.log("generated T" + randomInt1 + " name") + } else if(randomInt1 == 3) { + var randomName = randomChoice(initialArrayR) + randomChoice(vowelArrayR) + randomChoice(medialArrayR) + randomChoice(vowelArrayR) + randomChoice(medialArrayR) + randomChoice(finalArrayR) + //console.log("generated T" + randomInt1 + " name") + } else if(randomInt1 == 4) { + var randomName = randomChoice(vowelArrayR) + randomChoice(initialArrayR) + randomChoice(vowelArrayR) + randomChoice(finalArrayR) + //console.log("generated T" + randomInt1 + " name") + } else if(randomInt1 == 5) { + var randomName = randomChoice(initialArrayR) + randomChoice(vowelArrayR) + randomChoice(medialArrayR) + randomChoice(vowelArrayR) + randomChoice(medialArrayR) + randomChoice(vowelArrayR) + //console.log("generated T" + randomInt1 + " name") + } else if(randomInt1 == 6) { + var randomName = randomChoice(initialArrayR) + randomChoice(vowelArrayR) + randomChoice(medialArrayR) + randomChoice(vowelArrayR) + //console.log("generated T" + randomInt1 + " name") + } else { + var randomName = randomArrayChoice(vowelArrayR) + randomArrayChoice(medialArrayR) + randomArrayChoice(vowelArrayR) + randomArrayChoice(finalArrayR) + //console.log("warning: type was above 6 somehow") + } + //console.log(randomName) + return randomName + } + + const rockColor1 = {r: 128, g: 128, b: 128} + const rockColor2 = {r: 79, g: 79, b: 79} + const rockColor3 = {r: 148, g: 148, b: 148} + const gravelColor1 = {r: 227, g: 224, b: 223} + const gravelColor2 = {r: 177, g: 171, b: 163} + const gravelColor3 = {r: 116, g: 115, b: 109} + const gravelColor4 = {r: 82, g: 75, b: 71} + + function generateColors() { + var randomR = randomIntegerFromZeroToValue(255) + var randomG = randomIntegerFromZeroToValue(255) + var randomB = randomIntegerFromZeroToValue(255) + var randomColor = {r: randomR, g: randomG, b: randomB} + var newRockColor1 = averageColorObjects(rockColor1,randomColor,weight1=0.65) + var newRockColor2 = averageColorObjects(rockColor2,randomColor,weight1=0.65) + var newRockColor3 = averageColorObjects(rockColor3,randomColor,weight1=0.65) + var newGravelColor1 = averageColorObjects(gravelColor1,randomColor,weight1=0.675) + var newGravelColor2 = averageColorObjects(gravelColor2,randomColor,weight1=0.675) + var newGravelColor3 = averageColorObjects(gravelColor3,randomColor,weight1=0.675) + var newGravelColor4 = averageColorObjects(gravelColor4,randomColor,weight1=0.675) + var newRockColor1 = rgbToHex(newRockColor1) + var newRockColor2 = rgbToHex(newRockColor2) + var newRockColor3 = rgbToHex(newRockColor3) + var newGravelColor1 = rgbToHex(newGravelColor1) + var newGravelColor2 = rgbToHex(newGravelColor2) + var newGravelColor3 = rgbToHex(newGravelColor3) + var newGravelColor4 = rgbToHex(newGravelColor4) + return [newRockColor1, newRockColor2, newRockColor3, newGravelColor1, newGravelColor2, newGravelColor3, newGravelColor4] + } + + function _generateAveragedRandoms() { + return averageNumericArray([Math.random(),Math.random(),Math.random()]) + } + + function avgRndToMult() { + return 1 + (0.55 - _generateAveragedRandoms()) + } + + elements.gravel.breakInto = "dust" + + if(makeRockString == true) { + rockString = "" + } + + for(i = 0; i < rockAmount; i++) { + var name = generateName() + var meltingAdjustment = avgRndToMult() + var densityAdjustment = avgRndToMult() + var hardnessAdjustment = avgRndToMult() + var colors = generateColors() + if(typeof(elements[name]) != "undefined") { + name = name + randomChoice(vowelArrayR) + randomChoice(finalArrayR) + } + elements[name] = { + name: name, + color: [colors[0], colors[1], colors[2]], + behavior: behaviors.POWDER, + tempHigh: 950 * meltingAdjustment, + category: "random rocks", + state: "solid", + density: 2550 * densityAdjustment, + hardness: 0.5 * hardnessAdjustment, + breakInto: ["dust",`${name}_gravel`], + } + + if(makeRockString == true) { + rockString = rockString + `elements.${name} = {\n name: \"${name}\",\n color: [\"${colors[0]}\", \"${colors[1]}\", \"${colors[2]}\"],\n behavior: behaviors.POWDER,\n tempHigh: ${950 * meltingAdjustment},\n category: \"random rocks\",\n state: \"solid\",\n density: ${2550 * densityAdjustment},\n hardness: ${0.5 * hardnessAdjustment},\n breakInto: [\"dust\",\"${name}_gravel\"],\n};\n\n` + } + + elements[`${name}_gravel`] = { + name: `${name} gravel`, + color: [colors[3], colors[4], colors[5], colors[6]], + behavior: behaviors.POWDER, + tempHigh: 950 * meltingAdjustment, + stateHigh: name, + category: "random rocks", + state: "solid", + density: 1680 * densityAdjustment, + hardness: 0.2 * (hardnessAdjustment ** (2/3)), + breakInto: "dust", + } + + if(makeRockString == true) { + rockString = rockString + `elements.${name}_gravel = {\n name: \"${name} gravel\",\n color: [\"${colors[3]}\", \"${colors[4]}\", \"${colors[5]}\", \"${colors[6]}\"],\n behavior: behaviors.POWDER,\n tempHigh: ${950 * meltingAdjustment},\n stateHigh: \"${name}\",\n category: \"random rocks\",\n state: \"solid\",\n density: ${1680 * densityAdjustment},\n hardness: ${0.2 * (hardnessAdjustment ** (2/3))},\n breakInto: \"dust\",\n};\n\n` + } + + } + + if(makeRockString == true) { + console.log(`Rocks added to rockString (length ${rockString.length})`) } - rockAmount = Math.min(10000,Math.max(rockAmount,1)) } else { - rockAmount = 10 -} - -if(urlParams.get('makeRockString') !== null) { //if the variable exists at all - makeRockString = true -} else { //if it doesn't (and it returns null) - makeRockString = false -} - -function _randomInt(max) { - if(max >= 0) { - return Math.floor(Math.random() * (max + 1)) - } else { - return 0 - Math.floor(Math.random() * (Math.abs(max) + 1)) - } -} - -function _randomArrayChoice(array) { - return array[_randomInt(array.length - 1)] -} - -//arbitrarily picked -const initialArrayR = ["m","n","p","t","ch","k","b","d","j","g","f","th","s","sh","h","l","r","y","w","z","sp","st","sk","sl","spl","stl","skl","sr","spr","str","skr","sl","fl","fr","pl","pr","tl","tr","kl","kr","shr","fl","fr","thr"] //:eggTF: -const vowelArrayR = ["a","e","i","o","u","ay","ee","ie","oa","ew","oo","oi","ow"] //:eggTF: -const medialArrayR = ["m","n","p","t","k","b","d","g","f","th","s","sh","h","l","r","y","z","sp","st","sk","sl","spl","stl","skl","sr","spr","str","skr","sl","fl","fr","pl","pr","tl","tr","kl","kr","shr","fl","fr","thr"] //:eggTF: -const finalArrayR = ["m","n","p","t","k","b","d","g","f","th","s","sh","l","r","y","z","sp","st","sk","sl","spl","stl","skl","sr","spr","str","skr","pl","pr","tl","tr","bl","vr"] //:eggTF: - -function generateName() { - //these are picked arbitrarily - - //console.log("getting random type") - var randomInt1 = _randomInt(6) - - //console.log("generating type " + randomInt1) - if(randomInt1 == 0) { - var randomName = _randomArrayChoice(initialArrayR) + _randomArrayChoice(vowelArrayR) + _randomArrayChoice(finalArrayR) - //console.log("generated T" + randomInt1 + " name") - } else if(randomInt1 == 1) { - var randomName = _randomArrayChoice(initialArrayR) + _randomArrayChoice(vowelArrayR) + _randomArrayChoice(medialArrayR) + _randomArrayChoice(vowelArrayR) + _randomArrayChoice(finalArrayR) - //console.log("generated T" + randomInt1 + " name") - } else if(randomInt1 == 2) { - var randomName = _randomArrayChoice(initialArrayR) + _randomArrayChoice(vowelArrayR) + _randomArrayChoice(finalArrayR) + "e" - //console.log("generated T" + randomInt1 + " name") - } else if(randomInt1 == 3) { - var randomName = _randomArrayChoice(initialArrayR) + _randomArrayChoice(vowelArrayR) + _randomArrayChoice(medialArrayR) + _randomArrayChoice(vowelArrayR) + _randomArrayChoice(medialArrayR) + _randomArrayChoice(finalArrayR) - //console.log("generated T" + randomInt1 + " name") - } else if(randomInt1 == 4) { - var randomName = _randomArrayChoice(vowelArrayR) + _randomArrayChoice(initialArrayR) + _randomArrayChoice(vowelArrayR) + _randomArrayChoice(finalArrayR) - //console.log("generated T" + randomInt1 + " name") - } else if(randomInt1 == 5) { - var randomName = _randomArrayChoice(initialArrayR) + _randomArrayChoice(vowelArrayR) + _randomArrayChoice(medialArrayR) + _randomArrayChoice(vowelArrayR) + _randomArrayChoice(medialArrayR) + _randomArrayChoice(vowelArrayR) - //console.log("generated T" + randomInt1 + " name") - } else if(randomInt1 == 6) { - var randomName = _randomArrayChoice(initialArrayR) + _randomArrayChoice(vowelArrayR) + _randomArrayChoice(medialArrayR) + _randomArrayChoice(vowelArrayR) - //console.log("generated T" + randomInt1 + " name") - } else { - var randomName = randomArrayChoice(vowelArrayR) + randomArrayChoice(medialArrayR) + randomArrayChoice(vowelArrayR) + randomArrayChoice(finalArrayR) - //console.log("warning: type was above 6 somehow") - } - //console.log(randomName) - return randomName -} - -const rockColor1 = {r: 128, g: 128, b: 128} -const rockColor2 = {r: 79, g: 79, b: 79} -const rockColor3 = {r: 148, g: 148, b: 148} -const gravelColor1 = {r: 227, g: 224, b: 223} -const gravelColor2 = {r: 177, g: 171, b: 163} -const gravelColor3 = {r: 116, g: 115, b: 109} -const gravelColor4 = {r: 82, g: 75, b: 71} - -function _rgbToHex(color) { - if(typeof(color) == "object") { //Expects object like "{r: 172, g: 11, b: 34}" - //console.log("Loading colors"); - //console.log("Loading R"); - var red = color.r; - //console.log("Loading G"); - var green = color.g; - //console.log("Loading B"); - var blue = color.b; - //console.log("Rounding R"); - red = Math.round(red); - //console.log("Rounding G"); - green = Math.round(green); - //console.log("Rounding B"); - blue = Math.round(blue); - //console.log("Bounding R"); - red = Math.min(255,Math.max(0,red)); - //console.log("Bounding G"); - green = Math.min(255,Math.max(0,green)); - //console.log("Bounding B"); - blue = Math.min(255,Math.max(0,blue)); - //console.log("Converting R"); - red = red.toString(16); - //console.log("Converting G"); - green = green.toString(16); - //console.log("Converting B"); - blue = blue.toString(16); - //console.log("Padding R"); - while(red.length < 2) { - red = "0" + red; - }; - //console.log("Padding G"); - while(green.length < 2) { - green = "0" + green; - }; - //console.log("Padding B"); - while(blue.length < 2) { - blue = "0" + blue; - }; - //console.log("Concatenating"); - return "#" + red + green + blue; - } else if(typeof(color) == "string") { //Expects string like "rgb(20,137,4)". - //console.log("Splitting string") - color = color.split(","); - //console.log("Getting R"); - var red = parseFloat(color[0].substring(4)) - //console.log("Getting G"); - var green = parseFloat(color[1]) - //console.log("Getting B"); - var blue = parseFloat(color[2].slice(0,-1)) - //console.log("Rounding R"); - red = Math.round(red); - //console.log("Rounding G"); - green = Math.round(green); - //console.log("Rounding B"); - blue = Math.round(blue); - //console.log("Bounding R"); - red = Math.min(255,Math.max(0,red)); - //console.log("Bounding G"); - green = Math.min(255,Math.max(0,green)); - //console.log("Bounding B"); - blue = Math.min(255,Math.max(0,blue)); - //console.log("Converting R"); - red = red.toString(16); - //console.log("Converting G"); - green = green.toString(16); - //console.log("Converting B"); - blue = blue.toString(16); - //console.log("Padding R"); - while(red.length < 2) { - red = "0" + red; - }; - //console.log("Padding G"); - while(green.length < 2) { - green = "0" + green; - }; - //console.log("Padding B"); - while(blue.length < 2) { - blue = "0" + blue; - }; - //console.log("Concatenating"); - return "#" + red + green + blue; - } else { - throw "error: Only objects and strings are supported." - }; + alert(`The ${libraryMod} mod is required and has been automatically inserted (reload for this to take effect).`) + enabledMods.splice(enabledMods.indexOf(modName),0,libraryMod) + localStorage.setItem("enabledMods", JSON.stringify(enabledMods)); }; - -function _averageColorObjects(color1,color2,weight1=0.5) { /*third argument is for color1 and expects a float from 0 - to 1, where 0 means "all color2" and 1 means "all color1"*/ - var w1 = Math.min(Math.max(weight1,0),1) - var red1 = color1.r - var green1 = color1.g - var blue1 = color1.b - var red2 = color2.r - var green2 = color2.g - var blue2 = color2.b - var red3 = (red1 * w1) + (red2 * (1 - w1)) - var green3 = (green1 * w1) + (green2 * (1 - w1)) - var blue3 = (blue1 * w1) + (blue2 * (1 - w1)) - return {r: red3, g: green3, b: blue3} -} - -function generateColors() { - var randomR = _randomInt(255) - var randomG = _randomInt(255) - var randomB = _randomInt(255) - var randomColor = {r: randomR, g: randomG, b: randomB} - var newRockColor1 = _averageColorObjects(rockColor1,randomColor,weight1=0.65) - var newRockColor2 = _averageColorObjects(rockColor2,randomColor,weight1=0.65) - var newRockColor3 = _averageColorObjects(rockColor3,randomColor,weight1=0.65) - var newGravelColor1 = _averageColorObjects(gravelColor1,randomColor,weight1=0.675) - var newGravelColor2 = _averageColorObjects(gravelColor2,randomColor,weight1=0.675) - var newGravelColor3 = _averageColorObjects(gravelColor3,randomColor,weight1=0.675) - var newGravelColor4 = _averageColorObjects(gravelColor4,randomColor,weight1=0.675) - var newRockColor1 = _rgbToHex(newRockColor1) - var newRockColor2 = _rgbToHex(newRockColor2) - var newRockColor3 = _rgbToHex(newRockColor3) - var newGravelColor1 = _rgbToHex(newGravelColor1) - var newGravelColor2 = _rgbToHex(newGravelColor2) - var newGravelColor3 = _rgbToHex(newGravelColor3) - var newGravelColor4 = _rgbToHex(newGravelColor4) - return [newRockColor1, newRockColor2, newRockColor3, newGravelColor1, newGravelColor2, newGravelColor3, newGravelColor4] -} - -function _add2(number1,number2) { - return number1 + number2 -} - -function _arrayAverage(array) { - var total = array.reduce(_add2,0) - return total / array.length -} - -function _generateAveragedRandoms() { - return _arrayAverage([Math.random(),Math.random(),Math.random()]) -} - -function avgRndToMult() { - return 1 + (0.55 - _generateAveragedRandoms()) -} - -elements.gravel.breakInto = "dust" - -if(makeRockString == true) { - rockString = "" -} - -for(i = 0; i < rockAmount; i++) { - var name = generateName() - var meltingAdjustment = avgRndToMult() - var densityAdjustment = avgRndToMult() - var hardnessAdjustment = avgRndToMult() - var colors = generateColors() - if(typeof(elements[name]) != "undefined") { - name = name + _randomArrayChoice(vowelArrayR) + _randomArrayChoice(finalArrayR) - } - elements[name] = { - name: name, - color: [colors[0], colors[1], colors[2]], - behavior: behaviors.POWDER, - tempHigh: 950 * meltingAdjustment, - category: "random rocks", - state: "solid", - density: 2550 * densityAdjustment, - hardness: 0.5 * hardnessAdjustment, - breakInto: ["dust",`${name}_gravel`], - } - - if(makeRockString == true) { - rockString = rockString + `elements.${name} = {\n name: \"${name}\",\n color: [\"${colors[0]}\", \"${colors[1]}\", \"${colors[2]}\"],\n behavior: behaviors.POWDER,\n tempHigh: ${950 * meltingAdjustment},\n category: \"random rocks\",\n state: \"solid\",\n density: ${2550 * densityAdjustment},\n hardness: ${0.5 * hardnessAdjustment},\n breakInto: [\"dust\",\"${name}_gravel\"],\n};\n\n` - } - - elements[`${name}_gravel`] = { - name: `${name} gravel`, - color: [colors[3], colors[4], colors[5], colors[6]], - behavior: behaviors.POWDER, - tempHigh: 950 * meltingAdjustment, - stateHigh: name, - category: "random rocks", - state: "solid", - density: 1680 * densityAdjustment, - hardness: 0.2 * (hardnessAdjustment ** (2/3)), - breakInto: "dust", - } - - if(makeRockString == true) { - rockString = rockString + `elements.${name}_gravel = {\n name: \"${name} gravel\",\n color: [\"${colors[3]}\", \"${colors[4]}\", \"${colors[5]}\", \"${colors[6]}\"],\n behavior: behaviors.POWDER,\n tempHigh: ${950 * meltingAdjustment},\n stateHigh: \"${name}\",\n category: \"random rocks\",\n state: \"solid\",\n density: ${1680 * densityAdjustment},\n hardness: ${0.2 * (hardnessAdjustment ** (2/3))},\n breakInto: \"dust\",\n};\n\n` - } - -} - -if(makeRockString == true) { - console.log(`Rocks added to rockString (length ${rockString.length})`) -}