diff --git a/binaries/data/mods/public/globalscripts/random.js b/binaries/data/mods/public/globalscripts/random.js index 4999ffb255..8c8674c520 100644 --- a/binaries/data/mods/public/globalscripts/random.js +++ b/binaries/data/mods/public/globalscripts/random.js @@ -24,12 +24,9 @@ function pickRandom(source) } /** - * Return a random floating point number. - * - * If two parameters are given, and the returned float is in the interval [min, max). - * If no parameter is given, the returned float is in the interval [0, 1). + * Return a random floating point number in the interval [min, max). */ -function randFloat(min = 0, max = 1) +function randFloat(min, max) { return min + Math.random() * (max - min); } diff --git a/binaries/data/mods/public/maps/random/ardennes_forest.js b/binaries/data/mods/public/maps/random/ardennes_forest.js index a4ef9b047c..8dbb7533a6 100644 --- a/binaries/data/mods/public/maps/random/ardennes_forest.js +++ b/binaries/data/mods/public/maps/random/ardennes_forest.js @@ -121,7 +121,7 @@ var playerX = new Array(numPlayers); var playerZ = new Array(numPlayers); var playerAngle = new Array(numPlayers); -var startAngle = randFloat() * 2 * PI; +var startAngle = randFloat(0, 2 * PI); for (var i=0; i < numPlayers; i++) { playerAngle[i] = startAngle + i*2*PI/numPlayers; diff --git a/binaries/data/mods/public/maps/random/caledonian_meadows.js b/binaries/data/mods/public/maps/random/caledonian_meadows.js index f813d4b4b5..23ff5a8233 100644 --- a/binaries/data/mods/public/maps/random/caledonian_meadows.js +++ b/binaries/data/mods/public/maps/random/caledonian_meadows.js @@ -164,7 +164,7 @@ function placeRandomPathToHeight( if (getDistance(position.x, position.y, target.x, target.y) < distance / 2) break; let angleToTarget = getAngle(position.x, position.y, target.x, target.y); - let angleOff = PI * (randFloat() - 0.5); + let angleOff = randFloat(-PI/2, PI/2); position.x += distance * cos(angleToTarget + angleOff); position.y += distance * sin(angleToTarget + angleOff); } @@ -309,7 +309,7 @@ function placeMine(point, centerEntity) let dAngle = TWO_PI / quantity; for (let i = 0; i < quantity; ++i) { - let angle = i * dAngle + randFloat(0, dAngle); + let angle = dAngle * randFloat(i, i + 1); let dist = randFloat(2, 5); placeObject(point.x + dist * Math.cos(angle), point.y + dist * Math.sin(angle), pickRandom(decorations), 0, randFloat(0, 2 * PI)); } @@ -356,7 +356,7 @@ function placeGrove(point) let dAngle = TWO_PI / quantity; for (let i = 0; i < quantity; ++i) { - let angle = dAngle * randFloat(i, i+1); + let angle = dAngle * randFloat(i, i + 1); let dist = randFloat(2, 5); let objectList = groveEntities; if (i % 3 == 0) @@ -382,7 +382,7 @@ function placeCamp(point, let dAngle = TWO_PI / quantity; for (let i = 0; i < quantity; ++i) { - let angle = i * dAngle + randFloat(0, dAngle); + let angle = dAngle * randFloat(i, i + 1); let dist = randFloat(1, 3); placeObject(point.x + dist * Math.cos(angle), point.y + dist * Math.sin(angle), pickRandom(otherEntities), 0, randFloat(0, 2 * PI)); } @@ -734,7 +734,7 @@ for (let h = 0; h < heighLimits.length; ++h) g_Map.texture[x][y] = g_Map.getTextureID(texture); if (actor) - placeObject(x + randFloat(), y + randFloat(), actor, 0, randFloat() * TWO_PI); + placeObject(randFloat(x, x + 1), randFloat(y, y + 1), actor, 0, randFloat(0, 2 * PI)); } } diff --git a/binaries/data/mods/public/maps/random/corsica.js b/binaries/data/mods/public/maps/random/corsica.js index 28b4ec3c40..cb0baf1a6f 100644 --- a/binaries/data/mods/public/maps/random/corsica.js +++ b/binaries/data/mods/public/maps/random/corsica.js @@ -181,7 +181,7 @@ var islandZ = [SardiniaZ,CorsicaZ]; for (var island = 0; island <= 1; island++) for (var i = 0; i <= nbCreeks; i++) { - var radius = fractionToTiles( (Math.random()/17) + 0.49); + var radius = fractionToTiles(randFloat(0.49, 0.55)); var angle = PI*island + i*(PI/(nbCreeks*2)); if (swap) angle += PI/2; @@ -338,7 +338,7 @@ for (var i = 0; i < numPlayers; i++) placeDefaultChicken(fx, fz, clBaseResource); // create berry bushes - var bbAngle = randFloat(0, TWO_PI); + var bbAngle = randFloat(0, 2 * PI); var bbDist = 11; var bbX = round(fx + bbDist * cos(bbAngle)); var bbZ = round(fz + bbDist * sin(bbAngle)); diff --git a/binaries/data/mods/public/maps/random/cycladic_archipelago.js b/binaries/data/mods/public/maps/random/cycladic_archipelago.js index b9a82b05f6..a6f6f3d885 100644 --- a/binaries/data/mods/public/maps/random/cycladic_archipelago.js +++ b/binaries/data/mods/public/maps/random/cycladic_archipelago.js @@ -102,7 +102,7 @@ var islandAngle = new Array(numIslands); //holds all land areas var areas = []; -var startAngle = randFloat() * 2 * PI; +var startAngle = randFloat(0, 2 * PI); for (var i=0; i < numIslands; i++) { islandAngle[i] = startAngle + i*2*PI/numIslands; @@ -246,7 +246,7 @@ RMS.SetProgress(20); // get the x and z in tiles var nCenter = floor(scaleByMapSize(1,4)); -var startAngle = randFloat() * 2 * PI; +startAngle = randFloat(0, 2 * PI); for (var i = 0; i < nCenter; ++i) { var fx = 0.5; @@ -254,7 +254,7 @@ for (var i = 0; i < nCenter; ++i) if (nCenter != 1) { - let isangle = startAngle + i*2*PI/nCenter + PI/8 * randFloat(-1, -1); + let isangle = startAngle + i * 2 * PI / nCenter + randFloat(-PI/8, PI/8); let dRadius = randFloat(0.1, 0.16); fx = 0.5 + dRadius * cos(isangle); fz = 0.5 + dRadius * sin(isangle); diff --git a/binaries/data/mods/public/maps/random/deep_forest.js b/binaries/data/mods/public/maps/random/deep_forest.js index 3d85b32c30..c0d6ac1d48 100644 --- a/binaries/data/mods/public/maps/random/deep_forest.js +++ b/binaries/data/mods/public/maps/random/deep_forest.js @@ -160,7 +160,7 @@ for (var i = 0; i < maxI; i++) while (targetReached == false && tries < 2*mapSize) { var placer = new ClumpPlacer(pathWidth, 1, 1, 1, x, z); - var painter = [new TerrainPainter(terrainPath), new ElevationPainter(-randFloat()), paintClass(clPath)]; + var painter = [new TerrainPainter(terrainPath), new ElevationPainter(randFloat(-1, 0)), paintClass(clPath)]; createArea(placer, painter, avoidClasses(clHill, 0, clBaseResource, 4)); // addToClass(x, z, clPath); // Not needed... // Set vars for next loop @@ -198,7 +198,7 @@ for (var i=0; i < numPlayers; i++) var placeZ = round(mapCenterX + resourceRadius*sin(playerAngle[i] + (rIndex+1)*angleDist/(resourcePerPlayer.length+1))); placeObject(placeX, placeZ, resourcePerPlayer[rIndex], 0, randFloat(0, 2*PI)); var placer = new ClumpPlacer(40, 1/2, 1/8, 1, placeX, placeZ); - var painter = [new LayeredPainter([terrainHillBorder, terrainHill], [1]), new ElevationPainter(1+randFloat()), paintClass(clHill)]; + var painter = [new LayeredPainter([terrainHillBorder, terrainHill], [1]), new ElevationPainter(randFloat(1, 2)), paintClass(clHill)]; createArea(placer, painter); } } @@ -208,7 +208,7 @@ RMS.SetProgress(60); // Place eyecandy placeObject(mapCenterX, mapCenterZ, templateEC, 0, randFloat(0, 2*PI)); var placer = new ClumpPlacer(radiusEC*radiusEC, 1/2, 1/8, 1, mapCenterX, mapCenterZ); -var painter = [new LayeredPainter([terrainHillBorder, terrainHill], [radiusEC/4]), new ElevationPainter(1+randFloat()), paintClass(clHill)]; +var painter = [new LayeredPainter([terrainHillBorder, terrainHill], [radiusEC/4]), new ElevationPainter(randFloat(1, 2)), paintClass(clHill)]; createArea(placer, painter); // Woods and general hight map @@ -228,16 +228,16 @@ for (var x = 0; x < mapSize; x++) var tDensActual = maxTreeDensity * tDensFactSL * tDensFactRad * tDensFactEC; if (randBool(tDensActual) && radius < playableMapRadius) { - if (tDensActual < bushChance*randFloat()*maxTreeDensity) + if (tDensActual < randFloat(0, bushChance * maxTreeDensity)) { var placer = new ClumpPlacer(1, 1.0, 1.0, 1, x, z); - var painter = [new TerrainPainter(terrainWoodBorder), new ElevationPainter(randFloat()), paintClass(clForest)]; + var painter = [new TerrainPainter(terrainWoodBorder), new ElevationPainter(randFloat(0, 1)), paintClass(clForest)]; createArea(placer, painter, avoidClasses(clPath, 1, clHill, 0)); } else { var placer = new ClumpPlacer(1, 1.0, 1.0, 1, x, z); - var painter = [new TerrainPainter(terrainWood), new ElevationPainter(randFloat()), paintClass(clForest)]; + var painter = [new TerrainPainter(terrainWood), new ElevationPainter(randFloat(0, 1)), paintClass(clForest)]; createArea(placer, painter, avoidClasses(clPath, 2, clHill, 1)); } } diff --git a/binaries/data/mods/public/maps/random/latium.js b/binaries/data/mods/public/maps/random/latium.js index e21e23c512..6da0fd1b30 100644 --- a/binaries/data/mods/public/maps/random/latium.js +++ b/binaries/data/mods/public/maps/random/latium.js @@ -94,12 +94,12 @@ var playerZ = new Array(numPlayers+1); var numLeftPlayers = ceil(numPlayers/2); for (var i = 1; i <= numLeftPlayers; i++) { - playerX[i] = 0.28 + randFloat(-0.01, 0.01); + playerX[i] = randFloat(0.27, 0.29); playerZ[i] = (0.5+i-1)/numLeftPlayers + randFloat(-0.01, 0.01); } for (var i = numLeftPlayers+1; i <= numPlayers; i++) { - playerX[i] = 0.72 + randFloat(-0.01, 0.01); + playerX[i] = randFloat(0.71, 0.73); playerZ[i] = (0.5+i-numLeftPlayers-1)/numLeftPlayers + randFloat(-0.01, 0.01); } @@ -334,14 +334,14 @@ for (var ix = 0; ix < mapSize; ix++) { t = (diffH > 1.2) ? tGrassCliff : tGrassDry; if (diffH < 0.5 && randBool(0.02)) - placeObject(ix+randFloat(), iz+randFloat(), aGrassDry, 0, randFloat(0, TWO_PI)); + placeObject(randFloat(ix, ix + 1), randFloat(iz, iz + 1), aGrassDry, 0, randFloat(0, 2 * PI)); } else if (grassNoise > 0.61) { t = (diffH > 1.2 ? tGrassRock : tGrassShrubs); } else if (diffH < 0.5 && randBool(0.02)) - placeObject(ix+randFloat(), iz+randFloat(), aGrass, 0, randFloat(0, TWO_PI)); + placeObject(randFloat(ix, ix + 1), randFloat(iz, iz + 1), aGrass, 0, randFloat(0, 2 * PI)); } placeTerrain(ix, iz, t); diff --git a/binaries/data/mods/public/maps/random/new_rms_test.js b/binaries/data/mods/public/maps/random/new_rms_test.js index 7be40f4dc0..0cac2ae137 100644 --- a/binaries/data/mods/public/maps/random/new_rms_test.js +++ b/binaries/data/mods/public/maps/random/new_rms_test.js @@ -31,7 +31,7 @@ var playerX = new Array(numPlayers); var playerZ = new Array(numPlayers); var playerAngle = new Array(numPlayers); -var startAngle = randFloat() * 2 * PI; +var startAngle = randFloat(0, 2 * PI); for (var i=0; i < numPlayers; i++) { playerAngle[i] = startAngle + i*2*PI/numPlayers; diff --git a/binaries/data/mods/public/maps/random/rmgen/library.js b/binaries/data/mods/public/maps/random/rmgen/library.js index 73fa720936..96bf4071a5 100644 --- a/binaries/data/mods/public/maps/random/rmgen/library.js +++ b/binaries/data/mods/public/maps/random/rmgen/library.js @@ -126,7 +126,8 @@ function randomizePlacerCoordinates(placer, halfMapSize) if (!!g_MapSettings.CircularMap) { // Polar coordinates - let r = halfMapSize * Math.sqrt(randFloat()); // uniform distribution + // Uniformly distributed on the disk + let r = halfMapSize * Math.sqrt(randFloat(0, 1)); let theta = randFloat(0, 2 * PI); placer.x = Math.floor(r * Math.cos(theta)) + halfMapSize; placer.z = Math.floor(r * Math.sin(theta)) + halfMapSize; diff --git a/binaries/data/mods/public/maps/random/rmgen/misc.js b/binaries/data/mods/public/maps/random/rmgen/misc.js index 16f215c220..2c6734e9a9 100644 --- a/binaries/data/mods/public/maps/random/rmgen/misc.js +++ b/binaries/data/mods/public/maps/random/rmgen/misc.js @@ -775,7 +775,7 @@ function createMountain(maxHeight, minRadius, maxRadius, numCircles, constraint, var radius2 = radius * radius; var dx, dz, distance2; - var clumpHeight = (radius/maxRadius)*maxHeight*randFloat(0.8,1.2); + var clumpHeight = radius / maxRadius * maxHeight * randFloat(0.8, 1.2); for (var ix = sx; ix <= lx; ++ix) { diff --git a/binaries/data/mods/public/maps/random/rmgen/noise.js b/binaries/data/mods/public/maps/random/rmgen/noise.js index a9cdb33d77..0ea00fbe20 100644 --- a/binaries/data/mods/public/maps/random/rmgen/noise.js +++ b/binaries/data/mods/public/maps/random/rmgen/noise.js @@ -32,8 +32,7 @@ function Noise2D(freq) this.grads[i] = new Array(freq); for (var j=0; j < freq; ++j) { - var a = randFloat() * 2 * PI; - + var a = randFloat(0, 2 * PI); this.grads[i][j] = new Vector2D(Math.cos(a), Math.sin(a)); } } @@ -91,7 +90,7 @@ function Noise3D(freq, vfreq) var v = new Vector3D(); do { - v.set(2*randFloat()-1, 2*randFloat()-1, 2*randFloat()-1); + v.set(randFloat(-1, 1), randFloat(-1, 1), randFloat(-1, 1)); } while(v.lengthSquared() > 1 || v.lengthSquared() < 0.1); diff --git a/binaries/data/mods/public/maps/random/rmgen/placer.js b/binaries/data/mods/public/maps/random/rmgen/placer.js index efd6727680..f75b644439 100644 --- a/binaries/data/mods/public/maps/random/rmgen/placer.js +++ b/binaries/data/mods/public/maps/random/rmgen/placer.js @@ -48,7 +48,7 @@ ClumpPlacer.prototype.place = function(constraint) for (var i=0; i < ctrlPts; i++) { ctrlCoords[i] = i * perim / ctrlPts; - ctrlVals[i] = 2.0*randFloat(); + ctrlVals[i] = randFloat(0, 2); } var c = 0; diff --git a/binaries/data/mods/public/maps/random/rmgen/terrain.js b/binaries/data/mods/public/maps/random/rmgen/terrain.js index 918c1a22d3..5b13dc6a31 100644 --- a/binaries/data/mods/public/maps/random/rmgen/terrain.js +++ b/binaries/data/mods/public/maps/random/rmgen/terrain.js @@ -42,7 +42,7 @@ SimpleTerrain.prototype.constructor = SimpleTerrain; SimpleTerrain.prototype.placeNew = function(x, z) { if (this.treeType !== undefined && g_Map.validT(round(x), round(z), MAP_BORDER_WIDTH)) - g_Map.terrainObjects[x][z] = new Entity(this.treeType, 0, x+0.5, z+0.5, randFloat()*TWO_PI); + g_Map.terrainObjects[x][z] = new Entity(this.treeType, 0, x + 0.5, z + 0.5, randFloat(0, 2 * PI)); g_Map.texture[x][z] = g_Map.getTextureID(this.texture); }; diff --git a/binaries/data/mods/public/maps/random/rmgen/utilityfunctions.js b/binaries/data/mods/public/maps/random/rmgen/utilityfunctions.js index a1f3e019d4..b2d026f15c 100644 --- a/binaries/data/mods/public/maps/random/rmgen/utilityfunctions.js +++ b/binaries/data/mods/public/maps/random/rmgen/utilityfunctions.js @@ -209,9 +209,12 @@ function createStoneMineFormation(x, z, tileclass) for (var i = 0; i < 8; ++i) { - var bbX = round(x + (bbDist + randFloat(0,1)) * cos(bbAngle)); - var bbZ = round(z + (bbDist + randFloat(0,1)) * sin(bbAngle)); - placeObject(bbX, bbZ, oStoneSmall, 0, randFloat(0, TWO_PI)); + placeObject( + Math.round(x + randFloat(bbDist, bbDist + 1) * Math.cos(bbAngle)), + Math.round(z + randFloat(bbDist, bbDist + 1) * Math.sin(bbAngle)), + oStoneSmall, + 0, + randFloat(0, 2 * PI)); bbAngle += PI / 6; } } diff --git a/binaries/data/mods/public/maps/random/schwarzwald.js b/binaries/data/mods/public/maps/random/schwarzwald.js index ea516a4904..f91feede5c 100644 --- a/binaries/data/mods/public/maps/random/schwarzwald.js +++ b/binaries/data/mods/public/maps/random/schwarzwald.js @@ -434,7 +434,7 @@ for (var x = 0; x < mapSize; x++) if (randBool(tDensActual) && radius < playableMapRadius) { - if (tDensActual < bushChance*randFloat()*maxTreeDensity) + if (tDensActual < randFloat(0, bushChance * maxTreeDensity)) { var placer = new ClumpPlacer(1, 1.0, 1.0, 1, x, z); var painter = [new TerrainPainter(terrainWoodBorder), paintClass(clForest)];