add star seeding and starseed command
This commit is contained in:
parent
a40ea1c8fa
commit
4b418541ef
|
|
@ -13,7 +13,9 @@ if(enabledMods.includes(variablesMod)) {
|
||||||
};
|
};
|
||||||
|
|
||||||
if(enabledMods.includes("mods/code_library.js")) {
|
if(enabledMods.includes("mods/code_library.js")) {
|
||||||
commandHelpObject.stars = "Clears the screen and replaces it with random stars. Usage: stars <density (float, default: 0.001)>\nDon't include framing characters <>.\nArguments in <angle brackets> are optional."
|
commandHelpObject.stars = "Clears the screen and replaces it with random stars. Usage: stars <density (number, default: 0.001)> <seed (number, no default value)>\nDon't include framing characters <>.\nArguments in <angle brackets> are optional."
|
||||||
|
commandHelpObject.starseed = "Alerts the last used seed for stars. Usage: starseed";
|
||||||
|
var lastStarSeed = "[None]";
|
||||||
};
|
};
|
||||||
|
|
||||||
function rgbStringToUnvalidatedObject(string) {
|
function rgbStringToUnvalidatedObject(string) {
|
||||||
|
|
@ -395,6 +397,9 @@ if(enabledMods.includes(variablesMod)) {
|
||||||
return listObject;
|
return listObject;
|
||||||
case "stars":
|
case "stars":
|
||||||
var starDensity = inputAsArray[1];
|
var starDensity = inputAsArray[1];
|
||||||
|
|
||||||
|
var seed = inputAsArray[2]; //〜カクセイ〜
|
||||||
|
|
||||||
if(starDensity == undefined) {
|
if(starDensity == undefined) {
|
||||||
starDensity = 0.001
|
starDensity = 0.001
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -405,15 +410,33 @@ if(enabledMods.includes(variablesMod)) {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if(seed == undefined) {
|
||||||
|
seed = null;
|
||||||
|
} else {
|
||||||
|
seed = parseFloat(seed);
|
||||||
|
if(isNaN(seed)) {
|
||||||
|
alert("seed was NaN, ignoring");
|
||||||
|
seed = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
if(seed == null) {
|
||||||
|
seed = Math.random();
|
||||||
|
};
|
||||||
|
|
||||||
|
lastStarSeed = seed;
|
||||||
|
var randomFunction = mulberry32(seed);
|
||||||
|
|
||||||
if(!enabledMods.includes("mods/code_library.js")) {
|
if(!enabledMods.includes("mods/code_library.js")) {
|
||||||
alert("'stars' command requires 'code_library.js' mod!");
|
alert("'stars' command requires 'code_library.js' mod!");
|
||||||
|
return false;
|
||||||
} else {
|
} else {
|
||||||
clearAll();
|
clearAll();
|
||||||
for(j = 1; j < height; j++) {
|
for(j = 1; j < height; j++) {
|
||||||
for(i = 1; i < width; i++) {
|
for(i = 1; i < width; i++) {
|
||||||
if(Math.random() < starDensity) {
|
if(randomFunction() < starDensity) {
|
||||||
if(isEmpty(i,j,false)) {
|
if(isEmpty(i,j,false)) {
|
||||||
var value = Math.random() ** 4;
|
var value = randomFunction() ** 4;
|
||||||
|
|
||||||
if(value < 0.3) {
|
if(value < 0.3) {
|
||||||
createPixelReturn("sun",i,j).temp = randomIntegerBetweenTwoValues(1800,3300);
|
createPixelReturn("sun",i,j).temp = randomIntegerBetweenTwoValues(1800,3300);
|
||||||
|
|
@ -428,9 +451,9 @@ if(enabledMods.includes(variablesMod)) {
|
||||||
} else if(value < 0.88) {
|
} else if(value < 0.88) {
|
||||||
createPixelReturn("sun",i,j).temp = randomIntegerBetweenTwoValues(35000,90000);
|
createPixelReturn("sun",i,j).temp = randomIntegerBetweenTwoValues(35000,90000);
|
||||||
} else { //other stuff
|
} else { //other stuff
|
||||||
var value2 = Math.random();
|
var value2 = randomFunction();
|
||||||
if(value2 < 0.5) { //giant stars
|
if(value2 < 0.5) { //giant stars
|
||||||
var value3 = Math.random();
|
var value3 = randomFunction();
|
||||||
if(value3 < 0.6) { //favor red giants
|
if(value3 < 0.6) { //favor red giants
|
||||||
var sunPixels = fillCircleReturn("sun",i,j,randomIntegerBetweenTwoValues(3,4));
|
var sunPixels = fillCircleReturn("sun",i,j,randomIntegerBetweenTwoValues(3,4));
|
||||||
var randTemp = randomIntegerBetweenTwoValues(1800,3300)
|
var randTemp = randomIntegerBetweenTwoValues(1800,3300)
|
||||||
|
|
@ -451,7 +474,7 @@ if(enabledMods.includes(variablesMod)) {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
} else if(value2 < 0.6) { //supergiants
|
} else if(value2 < 0.6) { //supergiants
|
||||||
var value3 = Math.random();
|
var value3 = randomFunction();
|
||||||
if(value3 < 0.6) {
|
if(value3 < 0.6) {
|
||||||
var sunPixels = fillCircleReturn("sun",i,j,randomIntegerBetweenTwoValues(6,8));
|
var sunPixels = fillCircleReturn("sun",i,j,randomIntegerBetweenTwoValues(6,8));
|
||||||
var randTemp = randomIntegerBetweenTwoValues(1700,3200)
|
var randTemp = randomIntegerBetweenTwoValues(1700,3200)
|
||||||
|
|
@ -472,7 +495,7 @@ if(enabledMods.includes(variablesMod)) {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
} else if(value2 < 0.65) { //hypergiants
|
} else if(value2 < 0.65) { //hypergiants
|
||||||
var value3 = Math.random();
|
var value3 = randomFunction();
|
||||||
if(value3 < 0.6) {
|
if(value3 < 0.6) {
|
||||||
var sunPixels = fillCircleReturn("sun",i,j,randomIntegerBetweenTwoValues(9,12));
|
var sunPixels = fillCircleReturn("sun",i,j,randomIntegerBetweenTwoValues(9,12));
|
||||||
var randTemp = randomIntegerBetweenTwoValues(1600,3100)
|
var randTemp = randomIntegerBetweenTwoValues(1600,3100)
|
||||||
|
|
@ -493,7 +516,7 @@ if(enabledMods.includes(variablesMod)) {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
} else if(value2 < 0.8) { //white dwarfs/neutron stars
|
} else if(value2 < 0.8) { //white dwarfs/neutron stars
|
||||||
if(Math.random() < 0.8) { //favor white dwarfs
|
if(randomFunction() < 0.8) { //favor white dwarfs
|
||||||
createPixelReturn("sun",i,j).temp = randomIntegerBetweenTwoValues(100000,300000);
|
createPixelReturn("sun",i,j).temp = randomIntegerBetweenTwoValues(100000,300000);
|
||||||
} else {
|
} else {
|
||||||
elements.neutron_star ? createPixelReturn("neutron_star",i,j).temp = randomIntegerBetweenTwoValues(100000,10000000) : createPixelReturn("sun",i,j).temp = randomIntegerBetweenTwoValues(100000,300000);
|
elements.neutron_star ? createPixelReturn("neutron_star",i,j).temp = randomIntegerBetweenTwoValues(100000,10000000) : createPixelReturn("sun",i,j).temp = randomIntegerBetweenTwoValues(100000,300000);
|
||||||
|
|
@ -507,7 +530,17 @@ if(enabledMods.includes(variablesMod)) {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
return true;
|
||||||
break;
|
break;
|
||||||
|
case "kakusei":
|
||||||
|
case "starseed":
|
||||||
|
if(!enabledMods.includes("mods/code_library.js")) {
|
||||||
|
alert("'starseed' command requires 'code_library.js' mod!");
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
alertIfOutput(alertOutput,lastStarSeed);
|
||||||
|
console.log(lastStarSeed);
|
||||||
|
return lastStarSeed;
|
||||||
case "help":
|
case "help":
|
||||||
if(inputAsArray.length < 1) { //somehow
|
if(inputAsArray.length < 1) { //somehow
|
||||||
alertIfError(alertError,"Usage: help <command>\nDon't include framing characters []<>.\nArguments in <angle brackets> are optional.");
|
alertIfError(alertError,"Usage: help <command>\nDon't include framing characters []<>.\nArguments in <angle brackets> are optional.");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue