diff --git a/binaries/data/mods/public/maps/random/african_plains.js b/binaries/data/mods/public/maps/random/african_plains.js index 19122d2168..865c25bea6 100644 --- a/binaries/data/mods/public/maps/random/african_plains.js +++ b/binaries/data/mods/public/maps/random/african_plains.js @@ -56,20 +56,7 @@ var clBaseResource = createTileClass(); initTerrain(tPrimary); -var playerIDs = sortAllPlayers(); - -// Place players -var playerX = []; -var playerZ = []; -var playerAngle = []; - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; ++i) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35 * cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35 * sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; ++i) { diff --git a/binaries/data/mods/public/maps/random/alpine_lakes.js b/binaries/data/mods/public/maps/random/alpine_lakes.js index 445c899ba5..5e2cc14e44 100644 --- a/binaries/data/mods/public/maps/random/alpine_lakes.js +++ b/binaries/data/mods/public/maps/random/alpine_lakes.js @@ -102,20 +102,7 @@ var clSettlement = createTileClass(); initTerrain(tPrimary); -var playerIDs = sortAllPlayers(); - -// place players -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/alpine_valley.js b/binaries/data/mods/public/maps/random/alpine_valley.js index ded368c91e..8a18a5c1e7 100644 --- a/binaries/data/mods/public/maps/random/alpine_valley.js +++ b/binaries/data/mods/public/maps/random/alpine_valley.js @@ -87,20 +87,7 @@ var clSettlement = createTileClass(); initTerrain(tPrimary); -var playerIDs = sortAllPlayers(); - -// place players -var playerX = []; -var playerZ = []; -var playerAngle = []; - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ, playerAngle, startAngle] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/anatolian_plateau.js b/binaries/data/mods/public/maps/random/anatolian_plateau.js index 260df09cfa..87387f6f55 100644 --- a/binaries/data/mods/public/maps/random/anatolian_plateau.js +++ b/binaries/data/mods/public/maps/random/anatolian_plateau.js @@ -47,19 +47,7 @@ var clFood = createTileClass(); var clBaseResource = createTileClass(); var clSettlement = createTileClass(); -var playerIDs = sortAllPlayers(); - -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/archipelago.js b/binaries/data/mods/public/maps/random/archipelago.js index 521e1dccdb..9bec8c4034 100644 --- a/binaries/data/mods/public/maps/random/archipelago.js +++ b/binaries/data/mods/public/maps/random/archipelago.js @@ -64,20 +64,7 @@ var clBaseResource = createTileClass(); var clSettlement = createTileClass(); var clLand = createTileClass(); -var playerIDs = sortAllPlayers(); - -// place players -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/arctic_summer.js b/binaries/data/mods/public/maps/random/arctic_summer.js index 8aad0c756b..6fdae8555e 100644 --- a/binaries/data/mods/public/maps/random/arctic_summer.js +++ b/binaries/data/mods/public/maps/random/arctic_summer.js @@ -56,20 +56,16 @@ var clBaseResource = createTileClass(); initTerrain(tPrimary); -var playerIDs = sortAllPlayers(); +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); -var startAngle = randFloat(0, 2 * PI); for (let i = 0; i < numPlayers; i++) { log("Creating base for player " + playerIDs[i]); - let playerAngle = startAngle + i * 2 * PI / numPlayers; - let playerX = 0.5 + 0.35 * Math.cos(playerAngle); - let playerZ = 0.5 + 0.35 * Math.sin(playerAngle); let radius = scaleByMapSize(15, 25); // Get the x and z in tiles - let fx = fractionToTiles(playerX); - let fz = fractionToTiles(playerZ); + let fx = fractionToTiles(playerX[i]); + let fz = fractionToTiles(playerZ[i]); let ix = Math.round(fx); let iz = Math.round(fz); diff --git a/binaries/data/mods/public/maps/random/ardennes_forest.js b/binaries/data/mods/public/maps/random/ardennes_forest.js index 8f9f0042c3..d0558136a3 100644 --- a/binaries/data/mods/public/maps/random/ardennes_forest.js +++ b/binaries/data/mods/public/maps/random/ardennes_forest.js @@ -101,19 +101,7 @@ for (var ix = 0; ix < mapSize; ix++) } } -var playerIDs = sortAllPlayers(); - -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, 2 * PI); -for (var i=0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*2*PI/numPlayers; - playerX[i] = 0.5 + 0.3*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.3*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(0.3); function distanceToPlayers(x, z) { diff --git a/binaries/data/mods/public/maps/random/atlas_mountains.js b/binaries/data/mods/public/maps/random/atlas_mountains.js index 8de3a30e3b..3ffa49c030 100644 --- a/binaries/data/mods/public/maps/random/atlas_mountains.js +++ b/binaries/data/mods/public/maps/random/atlas_mountains.js @@ -56,19 +56,7 @@ var clBaseResource = createTileClass(); var clTreasure = createTileClass(); var clGrass = createTileClass(); -var playerIDs = sortAllPlayers(); - -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/botswanan_haven.js b/binaries/data/mods/public/maps/random/botswanan_haven.js index 61f1ef9733..789d83453a 100644 --- a/binaries/data/mods/public/maps/random/botswanan_haven.js +++ b/binaries/data/mods/public/maps/random/botswanan_haven.js @@ -57,19 +57,17 @@ var clForest = createTileClass(); var clFood = createTileClass(); var clBaseResource = createTileClass(); -var playerIDs = sortAllPlayers(); +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); -var startAngle = randFloat(0, 2 * PI); for (let i = 0; i < numPlayers; ++i) { - let playerAngle = startAngle + i * 2 * PI / numPlayers; let id = playerIDs[i]; log("Creating base for player " + id + "..."); let radius = scaleByMapSize(15, 25); // Get the x and z in tiles - let fx = fractionToTiles(0.5 + 0.35 * Math.cos(playerAngle)); - let fz = fractionToTiles(0.5 + 0.35 * Math.sin(playerAngle)); + let fx = fractionToTiles(playerX[i]); + let fz = fractionToTiles(playerZ[i]); let ix = Math.round(fx); let iz = Math.round(fz); diff --git a/binaries/data/mods/public/maps/random/cantabrian_highlands.js b/binaries/data/mods/public/maps/random/cantabrian_highlands.js index ecd7800c47..feb3d8be34 100644 --- a/binaries/data/mods/public/maps/random/cantabrian_highlands.js +++ b/binaries/data/mods/public/maps/random/cantabrian_highlands.js @@ -60,20 +60,7 @@ var clFood = createTileClass(); var clBaseResource = createTileClass(); var clSettlement = createTileClass(); -var playerIDs = sortAllPlayers(); - -// place players -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ, playerAngle] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/canyon.js b/binaries/data/mods/public/maps/random/canyon.js index 23d990f0d2..d7d3f7836c 100644 --- a/binaries/data/mods/public/maps/random/canyon.js +++ b/binaries/data/mods/public/maps/random/canyon.js @@ -86,19 +86,7 @@ var elevationPainter = new SmoothElevationPainter( ); createArea(placer, [terrainPainter, elevationPainter, paintClass(clLand)], null); -var playerIDs = sortAllPlayers(); - -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/continent.js b/binaries/data/mods/public/maps/random/continent.js index cbaf514185..99babc64b6 100644 --- a/binaries/data/mods/public/maps/random/continent.js +++ b/binaries/data/mods/public/maps/random/continent.js @@ -80,19 +80,7 @@ var elevationPainter = new SmoothElevationPainter( ); createArea(placer, [terrainPainter, elevationPainter, paintClass(clLand)], null); -var playerIDs = sortAllPlayers(); - -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.25*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.25*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(0.25); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/extinct_volcano.js b/binaries/data/mods/public/maps/random/extinct_volcano.js index b0a6a03ed7..0d964efc8e 100644 --- a/binaries/data/mods/public/maps/random/extinct_volcano.js +++ b/binaries/data/mods/public/maps/random/extinct_volcano.js @@ -80,22 +80,16 @@ var clRain = createTileClass(); var ccMountainHeight = 25; -var playerIDs = sortAllPlayers(); +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); -// Place players -var startAngle = randFloat(0, 2 * PI); for (let i = 0; i < numPlayers; ++i) { - let playerAngle = startAngle + i * 2 * PI / numPlayers; - let playerX = 0.5 + 0.35 * Math.cos(playerAngle); - let playerZ = 0.5 + 0.35 * Math.sin(playerAngle); - let id = playerIDs[i]; log("Creating base for player " + id + "..."); let radius = scaleByMapSize(15, 25); - let fx = fractionToTiles(playerX); - let fz = fractionToTiles(playerZ); + let fx = fractionToTiles(playerX[i]); + let fz = fractionToTiles(playerZ[i]); let ix = Math.round(fx); let iz = Math.round(fz); diff --git a/binaries/data/mods/public/maps/random/flood.js b/binaries/data/mods/public/maps/random/flood.js index 39819350a2..03f661f93f 100644 --- a/binaries/data/mods/public/maps/random/flood.js +++ b/binaries/data/mods/public/maps/random/flood.js @@ -71,20 +71,7 @@ let clBaseResource = createTileClass(); initTerrain(tWater); -let playerIDs = sortAllPlayers(); - -// Place players -let playerX = []; -let playerZ = []; -let playerAngle = []; - -let startAngle = randFloat(0, TWO_PI); -for (let i = 0; i < numPlayers; ++i) -{ - playerAngle[i] = startAngle + i * TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.38 * cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.38 * sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(0.38); let fx = fractionToTiles(0.5); let fz = fractionToTiles(0.5); diff --git a/binaries/data/mods/public/maps/random/fortress.js b/binaries/data/mods/public/maps/random/fortress.js index a81888519f..41f2bcb3ad 100644 --- a/binaries/data/mods/public/maps/random/fortress.js +++ b/binaries/data/mods/public/maps/random/fortress.js @@ -60,24 +60,13 @@ var clFood = createTileClass(); var clBaseResource = createTileClass(); var clSettlement = createTileClass(); -var playerIDs = sortAllPlayers(); - -// place players -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); -var baseRadius = 30; - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = mapSize*(0.5 + 0.35*cos(playerAngle[i])); - playerZ[i] = mapSize*(0.5 + 0.35*sin(playerAngle[i])); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i=0; i < numPlayers; i++) { + playerX[i] *= mapSize; + playerZ[i] *= mapSize; + var startEntities = getStartingEntities(i); // Place starting entities createStartingPlayerEntities(playerX[i], playerZ[i], i+1, startEntities); diff --git a/binaries/data/mods/public/maps/random/gear.js b/binaries/data/mods/public/maps/random/gear.js index 67cc12f718..b4071ccc8d 100644 --- a/binaries/data/mods/public/maps/random/gear.js +++ b/binaries/data/mods/public/maps/random/gear.js @@ -87,20 +87,7 @@ var elevationPainter = new SmoothElevationPainter( ); createArea(placer, [terrainPainter, elevationPainter, paintClass(clWater)], null); -var playerIDs = sortAllPlayers(); - -// place players -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ, playerAngle, startAngle] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/india.js b/binaries/data/mods/public/maps/random/india.js index fc60657f1b..b18b5422c6 100644 --- a/binaries/data/mods/public/maps/random/india.js +++ b/binaries/data/mods/public/maps/random/india.js @@ -35,18 +35,7 @@ var clMetal = createTileClass(); var clFood = createTileClass(); var clBaseResource = createTileClass(); -var playerIDs = sortAllPlayers(); - -var playerX = []; -var playerZ = []; -var startAngle = randFloat(0, 2 * PI); - -for (let i = 0; i < numPlayers; ++i) -{ - let playerAngle = startAngle + i * 2 * PI / numPlayers; - playerX[i] = 0.5 + 0.35 * Math.cos(playerAngle); - playerZ[i] = 0.5 + 0.35 * Math.sin(playerAngle); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (let i = 0; i < numPlayers; ++i) { diff --git a/binaries/data/mods/public/maps/random/islands.js b/binaries/data/mods/public/maps/random/islands.js index 0eae9776f6..6dabc27213 100644 --- a/binaries/data/mods/public/maps/random/islands.js +++ b/binaries/data/mods/public/maps/random/islands.js @@ -64,20 +64,7 @@ var clBaseResource = createTileClass(); var clSettlement = createTileClass(); var clLand = createTileClass(); -var playerIDs = sortAllPlayers(); - -// place players -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ, playerAngle] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/lake.js b/binaries/data/mods/public/maps/random/lake.js index 155ca5c3e9..75f091bb1d 100644 --- a/binaries/data/mods/public/maps/random/lake.js +++ b/binaries/data/mods/public/maps/random/lake.js @@ -63,20 +63,7 @@ var clSettlement = createTileClass(); initTerrain(tMainTerrain); -var playerIDs = sortAllPlayers(); - -// place players -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/mainland.js b/binaries/data/mods/public/maps/random/mainland.js index a212d6c7bd..06e305e11e 100644 --- a/binaries/data/mods/public/maps/random/mainland.js +++ b/binaries/data/mods/public/maps/random/mainland.js @@ -62,19 +62,7 @@ var clSettlement = createTileClass(); initTerrain(tMainTerrain); -var playerIDs = sortAllPlayers(); - -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/neareastern_badlands.js b/binaries/data/mods/public/maps/random/neareastern_badlands.js index b36573b42c..8f73b8e065 100644 --- a/binaries/data/mods/public/maps/random/neareastern_badlands.js +++ b/binaries/data/mods/public/maps/random/neareastern_badlands.js @@ -56,20 +56,7 @@ var clMetal = createTileClass(); var clFood = createTileClass(); var clBaseResource = createTileClass(); -var playerIDs = sortAllPlayers(); - -// place players -var playerX = []; -var playerZ = []; -var playerAngle = []; - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { 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 78c87c8b50..c7010af0b8 100644 --- a/binaries/data/mods/public/maps/random/new_rms_test.js +++ b/binaries/data/mods/public/maps/random/new_rms_test.js @@ -13,19 +13,7 @@ var clRock = createTileClass(); var clFood = createTileClass(); var clBaseResource = createTileClass(); -var playerIDs = sortAllPlayers(); - -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, 2 * PI); -for (var i=0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*2*PI/numPlayers; - playerX[i] = 0.5 + 0.39*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.39*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(0.39); for (var i=0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/oasis.js b/binaries/data/mods/public/maps/random/oasis.js index 887c472d85..fa10c4a198 100644 --- a/binaries/data/mods/public/maps/random/oasis.js +++ b/binaries/data/mods/public/maps/random/oasis.js @@ -56,20 +56,8 @@ var clDune = createTileClass(); initTerrain(tSand); -var playerIDs = sortAllPlayers(); +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); -// place players -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} var placer = undefined; var fx = 0; var fz = 0; var ix =0; var iz = 0; diff --git a/binaries/data/mods/public/maps/random/persian_highlands.js b/binaries/data/mods/public/maps/random/persian_highlands.js index b615d7f9dc..f9b5906992 100644 --- a/binaries/data/mods/public/maps/random/persian_highlands.js +++ b/binaries/data/mods/public/maps/random/persian_highlands.js @@ -71,20 +71,7 @@ var clCP = createTileClass(); initTerrain(tDirtMain); -var playerIDs = sortAllPlayers(); - -// place players -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/polar_sea.js b/binaries/data/mods/public/maps/random/polar_sea.js index 648403dbed..98424e4a41 100644 --- a/binaries/data/mods/public/maps/random/polar_sea.js +++ b/binaries/data/mods/public/maps/random/polar_sea.js @@ -47,19 +47,7 @@ var clForest = createTileClass(); initTerrain(tPrimary); -var playerIDs = sortAllPlayers(); - -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (let i = 0; i < numPlayers; ++i) -{ - playerAngle[i] = startAngle + i * TWO_PI / numPlayers; - playerX[i] = 0.5 + 0.35 * Math.cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35 * Math.sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); RMS.SetProgress(20); diff --git a/binaries/data/mods/public/maps/random/rhine_marshlands.js b/binaries/data/mods/public/maps/random/rhine_marshlands.js index 2a5a42d2ab..f3e7424064 100644 --- a/binaries/data/mods/public/maps/random/rhine_marshlands.js +++ b/binaries/data/mods/public/maps/random/rhine_marshlands.js @@ -52,19 +52,7 @@ var clFood = createTileClass(); var clBaseResource = createTileClass(); var clSettlement = createTileClass(); -var playerIDs = sortAllPlayers(); - -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/rivers.js b/binaries/data/mods/public/maps/random/rivers.js index 9985adb308..c366f9ac48 100644 --- a/binaries/data/mods/public/maps/random/rivers.js +++ b/binaries/data/mods/public/maps/random/rivers.js @@ -87,20 +87,7 @@ var elevationPainter = new SmoothElevationPainter( ); createArea(placer, [terrainPainter, elevationPainter, paintClass(clWater)], null); -var playerIDs = sortAllPlayers(); - -// place players -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ, playerAngle, startAngle] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/rmgen/library.js b/binaries/data/mods/public/maps/random/rmgen/library.js index 77b58cc11f..247a3b2a20 100644 --- a/binaries/data/mods/public/maps/random/rmgen/library.js +++ b/binaries/data/mods/public/maps/random/rmgen/library.js @@ -414,6 +414,26 @@ function primeSortAllPlayers() return primeSortPlayers(sortAllPlayers()); } +function radialPlayerPlacement(percentRadius = 0.35) +{ + let playerIDs = sortAllPlayers(); + + let playerX = []; + let playerZ = []; + let playerAngle = []; + + let startAngle = randFloat(0, TWO_PI); + + for (let i = 0; i < numPlayers; ++i) + { + playerAngle[i] = startAngle + i * TWO_PI / numPlayers; + playerX[i] = 0.5 + percentRadius * Math.cos(playerAngle[i]); + playerZ[i] = 0.5 + percentRadius * Math.sin(playerAngle[i]); + } + + return [playerIDs, playerX, playerZ, playerAngle, startAngle]; +} + function getStartingEntities(player) { let civ = getCivCode(player); diff --git a/binaries/data/mods/public/maps/random/saharan_oases.js b/binaries/data/mods/public/maps/random/saharan_oases.js index 0c6497734f..050634134c 100644 --- a/binaries/data/mods/public/maps/random/saharan_oases.js +++ b/binaries/data/mods/public/maps/random/saharan_oases.js @@ -65,19 +65,7 @@ var clPond = createTileClass(); var clShore = createTileClass(); var clTreasure = createTileClass(); -var playerIDs = sortAllPlayers(); - -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ, playerAngle] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/sahel.js b/binaries/data/mods/public/maps/random/sahel.js index 334b46fffe..ac63443694 100644 --- a/binaries/data/mods/public/maps/random/sahel.js +++ b/binaries/data/mods/public/maps/random/sahel.js @@ -44,20 +44,7 @@ var clFood = createTileClass(); var clBaseResource = createTileClass(); var clSettlement = createTileClass(); -var playerIDs = sortAllPlayers(); - -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); - -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/sahel_watering_holes.js b/binaries/data/mods/public/maps/random/sahel_watering_holes.js index 52149db8b7..88589e3ecb 100644 --- a/binaries/data/mods/public/maps/random/sahel_watering_holes.js +++ b/binaries/data/mods/public/maps/random/sahel_watering_holes.js @@ -56,19 +56,7 @@ var clBaseResource = createTileClass(); var clSettlement = createTileClass(); var clShallows = createTileClass(); -var playerIDs = sortAllPlayers(); - -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ, playerAngle, startAngle] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/snowflake_searocks.js b/binaries/data/mods/public/maps/random/snowflake_searocks.js index 5737c45b01..98e7d10c86 100644 --- a/binaries/data/mods/public/maps/random/snowflake_searocks.js +++ b/binaries/data/mods/public/maps/random/snowflake_searocks.js @@ -69,19 +69,7 @@ const radius = scaleByMapSize(15,30); const cliffRadius = 2; const elevation = 20; -var playerIDs = sortAllPlayers(); - -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ, playerAngle, startAngle] = radialPlayerPlacement(); // Creating other islands var numIslands = 0; diff --git a/binaries/data/mods/public/maps/random/survivalofthefittest.js b/binaries/data/mods/public/maps/random/survivalofthefittest.js index a416b52a9b..b1fa6ff833 100644 --- a/binaries/data/mods/public/maps/random/survivalofthefittest.js +++ b/binaries/data/mods/public/maps/random/survivalofthefittest.js @@ -69,21 +69,13 @@ createArea( ], null); -var playerIDs = sortAllPlayers(); +var [playerIDs, playerX, playerZ, playerAngle, startAngle] = radialPlayerPlacement(0.3); -// place players -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); var attackerX = new Array(numPlayers); var attackerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); -var startAngle = randFloat(0, 2 * PI); for (let i = 0; i < numPlayers; ++i) { - playerAngle[i] = startAngle + i * 2 * PI / numPlayers; - playerX[i] = 0.5 + 0.3*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.3*sin(playerAngle[i]); attackerX[i] = 0.5 + 0.45*cos(playerAngle[i]); attackerZ[i] = 0.5 + 0.45*sin(playerAngle[i]); } diff --git a/binaries/data/mods/public/maps/random/syria.js b/binaries/data/mods/public/maps/random/syria.js index 8bbff48f85..a4089ca3e9 100644 --- a/binaries/data/mods/public/maps/random/syria.js +++ b/binaries/data/mods/public/maps/random/syria.js @@ -55,19 +55,7 @@ var clBaseResource = createTileClass(); var clSettlement = createTileClass(); var clGrass = createTileClass(); -var playerIDs = sortAllPlayers(); - -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) { diff --git a/binaries/data/mods/public/maps/random/unknown.js b/binaries/data/mods/public/maps/random/unknown.js index 2632d31f85..ddf224e4b5 100644 --- a/binaries/data/mods/public/maps/random/unknown.js +++ b/binaries/data/mods/public/maps/random/unknown.js @@ -77,19 +77,7 @@ if (md == 1) //archipelago and island needsAdditionalWood = true; iberianTowers = true; - var playerIDs = sortAllPlayers(); - - var playerX = new Array(numPlayers); - var playerZ = new Array(numPlayers); - var playerAngle = new Array(numPlayers); - - var startAngle = randFloat(0, TWO_PI); - for (var i = 0; i < numPlayers; i++) - { - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); - } + var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); var mdd1 = randIntInclusive(1,3); @@ -199,19 +187,10 @@ if (md == 1) //archipelago and island //******************************************************************************************************** else if (md == 2) //continent { - var playerIDs = sortAllPlayers(); + var [playerIDs, playerX, playerZ] = radialPlayerPlacement(0.25); - var playerX = new Array(numPlayers); - var playerZ = new Array(numPlayers); - var playerAngle = new Array(numPlayers); - - var startAngle = randFloat(0, TWO_PI); for (var i = 0; i < numPlayers; i++) { - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.25*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.25*sin(playerAngle[i]); - var fx = fractionToTiles(playerX[i]); var fz = fractionToTiles(playerZ[i]); var ix = round(fx); @@ -708,19 +687,10 @@ else if (md == 4) //central river //******************************************************************************************************** else if (md == 5) //rivers and lake { - var playerIDs = sortAllPlayers(); + var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); - var playerX = new Array(numPlayers); - var playerZ = new Array(numPlayers); - var playerAngle = new Array(numPlayers); - - var startAngle = randFloat(0, TWO_PI); for (var i = 0; i < numPlayers; i++) { - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); - var fx = fractionToTiles(playerX[i]); var fz = fractionToTiles(playerZ[i]); var ix = round(fx); @@ -1196,19 +1166,7 @@ else if (md == 7) //gulf //******************************************************************************************************** else if (md == 8) //lakes { - var playerIDs = sortAllPlayers(); - - var playerX = new Array(numPlayers); - var playerZ = new Array(numPlayers); - var playerAngle = new Array(numPlayers); - - var startAngle = randFloat(0, TWO_PI); - for (var i = 0; i < numPlayers; i++) - { - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); - } + var [playerIDs, playerX, playerZ, playerAngle] = radialPlayerPlacement(); for (var ix = 0; ix < mapSize; ix++) { @@ -1261,19 +1219,7 @@ else if (md == 8) //lakes //******************************************************************************************************** else if (md == 9) //passes { - var playerIDs = sortAllPlayers(); - - var playerX = new Array(numPlayers); - var playerZ = new Array(numPlayers); - var playerAngle = new Array(numPlayers); - - var startAngle = randFloat(0, TWO_PI); - for (var i = 0; i < numPlayers; i++) - { - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); - } + var [playerIDs, playerX, playerZ, playerAngle] = radialPlayerPlacement(); for (var ix = 0; ix < mapSize; ix++) { @@ -1355,19 +1301,7 @@ else if (md == 9) //passes //******************************************************************************************************** else if (md == 10) //lowlands { - var playerIDs = sortAllPlayers(); - - var playerX = new Array(numPlayers); - var playerZ = new Array(numPlayers); - var playerAngle = new Array(numPlayers); - - var startAngle = randFloat(0, TWO_PI); - for (var i = 0; i < numPlayers; i++) - { - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); - } + var [playerIDs, playerX, playerZ, playerAngle] = radialPlayerPlacement(); for (var ix = 0; ix < mapSize; ix++) { @@ -1469,19 +1403,7 @@ else if (md == 10) //lowlands //******************************************************************************************************** else //mainland { - var playerIDs = sortAllPlayers(); - - var playerX = new Array(numPlayers); - var playerZ = new Array(numPlayers); - var playerAngle = new Array(numPlayers); - - var startAngle = randFloat(0, TWO_PI); - for (var i = 0; i < numPlayers; i++) - { - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); - } + var [playerIDs, playerX, playerZ, playerAngle] = radialPlayerPlacement(); for (var ix = 0; ix < mapSize; ix++) { diff --git a/binaries/data/mods/public/maps/random/unknown_land.js b/binaries/data/mods/public/maps/random/unknown_land.js index 75bdd08d68..e0aa01784e 100644 --- a/binaries/data/mods/public/maps/random/unknown_land.js +++ b/binaries/data/mods/public/maps/random/unknown_land.js @@ -73,20 +73,10 @@ var needsAdditionalWood = false; //***************************************************************************************************************************** if (md == 2) //continent { - var playerIDs = sortAllPlayers(); + var [playerIDs, playerX, playerZ, playerAngle] = radialPlayerPlacement(0.25); - // place players - var playerX = new Array(numPlayers); - var playerZ = new Array(numPlayers); - var playerAngle = new Array(numPlayers); - - var startAngle = randFloat(0, TWO_PI); for (var i = 0; i < numPlayers; i++) { - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.25*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.25*sin(playerAngle[i]); - var fx = fractionToTiles(playerX[i]); var fz = fractionToTiles(playerZ[i]); var ix = round(fx); @@ -559,20 +549,10 @@ else if (md == 4) //central river //******************************************************************************************************** else if (md == 5) //rivers and lake { + var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); - var playerIDs = sortAllPlayers(); - - var playerX = new Array(numPlayers); - var playerZ = new Array(numPlayers); - var playerAngle = new Array(numPlayers); - - var startAngle = randFloat(0, TWO_PI); for (var i = 0; i < numPlayers; i++) { - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); - var fx = fractionToTiles(playerX[i]); var fz = fractionToTiles(playerZ[i]); var ix = round(fx); @@ -964,20 +944,7 @@ else if (md == 7) //gulf //******************************************************************************************************** else if (md == 8) //lakes { - var playerIDs = sortAllPlayers(); - - // place players - var playerX = new Array(numPlayers); - var playerZ = new Array(numPlayers); - var playerAngle = new Array(numPlayers); - - var startAngle = randFloat(0, TWO_PI); - for (var i = 0; i < numPlayers; i++) - { - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); - } + var [playerIDs, playerX, playerZ, playerAngle] = radialPlayerPlacement(); for (var ix = 0; ix < mapSize; ix++) { @@ -1052,19 +1019,7 @@ else if (md == 8) //lakes //******************************************************************************************************** else if (md == 9) //passes { - var playerIDs = sortAllPlayers(); - - var playerX = new Array(numPlayers); - var playerZ = new Array(numPlayers); - var playerAngle = new Array(numPlayers); - - var startAngle = randFloat(0, TWO_PI); - for (var i = 0; i < numPlayers; i++) - { - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); - } + var [playerIDs, playerX, playerZ, playerAngle] = radialPlayerPlacement(); for (var ix = 0; ix < mapSize; ix++) { @@ -1146,19 +1101,7 @@ else if (md == 9) //passes //******************************************************************************************************** else if (md == 10) //lowlands { - var playerIDs = sortAllPlayers(); - - var playerX = new Array(numPlayers); - var playerZ = new Array(numPlayers); - var playerAngle = new Array(numPlayers); - - var startAngle = randFloat(0, TWO_PI); - for (var i = 0; i < numPlayers; i++) - { - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); - } + var [playerIDs, playerX, playerZ, playerAngle] = radialPlayerPlacement(); for (var ix = 0; ix < mapSize; ix++) { @@ -1260,19 +1203,7 @@ else if (md == 10) //lowlands //******************************************************************************************************** else //mainland { - var playerIDs = sortAllPlayers(); - - var playerX = new Array(numPlayers); - var playerZ = new Array(numPlayers); - var playerAngle = new Array(numPlayers); - - var startAngle = randFloat(0, TWO_PI); - for (var i = 0; i < numPlayers; i++) - { - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); - } + var [playerIDs, playerX, playerZ, playerAngle] = radialPlayerPlacement(); for (var ix = 0; ix < mapSize; ix++) { diff --git a/binaries/data/mods/public/maps/random/volcanic_lands.js b/binaries/data/mods/public/maps/random/volcanic_lands.js index a63f6017d0..9422b6a245 100644 --- a/binaries/data/mods/public/maps/random/volcanic_lands.js +++ b/binaries/data/mods/public/maps/random/volcanic_lands.js @@ -36,20 +36,7 @@ var clRock = createTileClass(); var clMetal = createTileClass(); var clBaseResource = createTileClass(); -var playerIDs = sortAllPlayers(); - -// place players -var playerX = new Array(numPlayers); -var playerZ = new Array(numPlayers); -var playerAngle = new Array(numPlayers); - -var startAngle = randFloat(0, TWO_PI); -for (var i = 0; i < numPlayers; i++) -{ - playerAngle[i] = startAngle + i*TWO_PI/numPlayers; - playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); - playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); -} +var [playerIDs, playerX, playerZ] = radialPlayerPlacement(); for (var i = 0; i < numPlayers; i++) {