Index: binaries/data/mods/public/maps/random/aegean_sea.js =================================================================== --- binaries/data/mods/public/maps/random/aegean_sea.js +++ binaries/data/mods/public/maps/random/aegean_sea.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { TILE_CENTERED_HEIGHT_MAP = true; @@ -113,7 +114,7 @@ "template": aBush1 } }); - Engine.SetProgress(30); + yield 30; paintRiver({ "parallel": false, @@ -132,7 +133,7 @@ paintTerrainBasedOnHeight(-Infinity, heightShore, Elevation_ExcludeMin_ExcludeMax, tShoreLower); paintTerrainBasedOnHeight(heightShore, heightLand, Elevation_ExcludeMin_ExcludeMax, tShoreUpper); - Engine.SetProgress(40); + yield 40; createBumps(avoidClasses(clWater, 2, clPlayer, 20)); @@ -143,7 +144,7 @@ clForest, forestTrees); - Engine.SetProgress(50); + yield 50; if (randBool()) createHills([tGrass, tCliff, tHill], @@ -165,7 +166,7 @@ scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -176,7 +177,7 @@ scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(60); + yield(60); g_Map.log("Creating undersea bumps"); createAreas( @@ -245,7 +246,7 @@ clMetal ); - Engine.SetProgress(65); + yield 65; createDecoration( [ @@ -265,7 +266,7 @@ ], avoidClasses(clWater, 2, clForest, 0, clPlayer, 0, clHill, 1)); - Engine.SetProgress(70); + yield 70; createFood( [ @@ -301,7 +302,7 @@ avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10), clFood); - Engine.SetProgress(90); + yield 90; const types = [oDatePalm, oSDatePalm, oCarob, oFanPalm, oPoplar, oCypress]; createStragglerTrees( @@ -342,5 +343,5 @@ setPPSaturation(0.51); setPPBloom(0.12); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/african_plains.js =================================================================== --- binaries/data/mods/public/maps/random/african_plains.js +++ binaries/data/mods/public/maps/random/african_plains.js @@ -2,8 +2,9 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap(mapSettings) { - if (g_MapSettings.Biome) + if (mapSettings.Biome) setSelectedBiome(); else setBiome("generic/savanna"); @@ -108,7 +109,7 @@ } // No decoratives }); - Engine.SetProgress(20); + yield 20; // The specificity of this map is a bunch of watering holes & hills making // it somewhat cluttered. @@ -118,7 +119,7 @@ g_Map.log("Creating hills"); createHills([tDirt2, tCliff, tGrassShrubs], avoidClasses(clPlayer, 30, clHill, 15), clHill, nbHills); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating water holes"); createAreas( @@ -134,7 +135,7 @@ avoidClasses(clPlayer, 22, clWater, 8, clHill, 2), nbWateringHoles); - Engine.SetProgress(45); + yield 45; paintTerrainBasedOnHeight(heightCliff, Infinity, 0, tCliff); } @@ -148,7 +149,7 @@ avoidClasses(clPlayer, 20, clForest, 15, clHill, 0, clWater, 2), clForest, scaleByMapSize(200, 1000)); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -158,7 +159,7 @@ avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating shrubs"); createPatches( @@ -167,7 +168,7 @@ avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating grass patches"); createPatches( @@ -176,7 +177,7 @@ avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating metal mines"); createBalancedMetalMines( @@ -194,7 +195,7 @@ avoidClasses(clWater, 4, clForest, 1, clPlayer, scaleByMapSize(20, 35), clHill, 1, clMetal, 10) ); - Engine.SetProgress(70); + yield 70; createDecoration( [ @@ -206,7 +207,7 @@ scaleByMapAreaAbsolute(8) ], avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0)); - Engine.SetProgress(75); + yield 75; // Roaming animals { @@ -307,7 +308,7 @@ ], [avoidClasses(clFood, 20), stayClasses(clWater, 6)], clFood); - Engine.SetProgress(85); + yield 85; g_Map.log("Creating straggler baobabs"); @@ -333,5 +334,5 @@ setSkySet("sunny"); setWaterType("clap"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/alpine_lakes.js =================================================================== --- binaries/data/mods/public/maps/random/alpine_lakes.js +++ binaries/data/mods/public/maps/random/alpine_lakes.js @@ -2,9 +2,10 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap(mapSettings) { - setBiome(g_MapSettings.Biome ?? "alpine/winter"); - const isLateSpringBiome = g_MapSettings.Biome !== "alpine/winter"; + setBiome(mapSettings.Biome ?? "alpine/winter"); + const isLateSpringBiome = mapSettings.Biome !== "alpine/winter"; setFogThickness(isLateSpringBiome ? 0.26 : 0.19); setFogFactor(isLateSpringBiome ? 0.4 : 0.35); @@ -64,7 +65,7 @@ "template": g_Decoratives.grassShort } }); - Engine.SetProgress(20); + yield 20; createMountains(g_Terrains.cliff, avoidClasses(clPlayer, 20, clHill, 8), @@ -75,7 +76,7 @@ Math.floor(scaleByMapSize(7, 15)), Math.floor(scaleByMapSize(5, 15))); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating lakes"); createAreas( @@ -101,7 +102,7 @@ clForest, forestTrees); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -119,7 +120,7 @@ avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating stone mines"); createMines( @@ -143,7 +144,7 @@ avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1), clMetal); - Engine.SetProgress(70); + yield 70; createDecoration( [ @@ -175,7 +176,7 @@ ], avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0)); - Engine.SetProgress(75); + yield 75; createFood( [ @@ -209,7 +210,7 @@ [avoidClasses(clFood, 20), stayClasses(clWater, 6)], clFood); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [g_Gaia.tree1], @@ -237,5 +238,5 @@ setWaterWaviness(3.0); setWaterType("clap"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/alpine_valley.js =================================================================== --- binaries/data/mods/public/maps/random/alpine_valley.js +++ binaries/data/mods/public/maps/random/alpine_valley.js @@ -204,7 +204,7 @@ /** * This is the only function meant to be publicly accessible. */ -MountainRangeBuilder.prototype.CreateMountainRanges = function(map) +MountainRangeBuilder.prototype.CreateMountainRanges = function*(map) { map.log("Creating mountainrange with " + this.possibleEdges.length + " possible edges"); @@ -212,7 +212,7 @@ while (this.possibleEdges.length) { - Engine.SetProgress(35 - 15 * this.possibleEdges.length / max); + yield 35 - 15 * this.possibleEdges.length / max; this.index = randIntExclusive(0, this.possibleEdges.length); this.UpdateCurrentEdge(); @@ -234,8 +234,9 @@ } }; +function* GenerateMap(mapSettings) { - setBiome(g_MapSettings.Biome ?? "alpine/winter"); + setBiome(mapSettings.Biome ?? "alpine/winter"); const heightLand = 3; const heightOffsetBump = 2; @@ -287,9 +288,9 @@ "template": g_Decoratives.grassShort } }); - Engine.SetProgress(20); + yield 20; - new MountainRangeBuilder({ + yield* new MountainRangeBuilder({ "numPlayers": numPlayers, "pathplacer": new PathPlacer( undefined, @@ -323,7 +324,7 @@ ] }).CreateMountainRanges(g_Map); - Engine.SetProgress(35); + yield 35; paintTerrainBasedOnHeight(heightLand + 0.1, snowlineHeight, 0, g_Terrains.cliff); paintTerrainBasedOnHeight(snowlineHeight, heightMountain, 3, g_Terrains.snowLimited); @@ -334,7 +335,7 @@ new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 2), avoidClasses(clPlayer, 10), scaleByMapSize(100, 200)); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating hills"); createAreas( @@ -347,7 +348,7 @@ avoidClasses(clPlayer, 20, clHill, 14), scaleByMapSize(10, 80) * numPlayers ); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating forests"); const [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7); @@ -367,7 +368,7 @@ ], avoidClasses(clPlayer, 12, clForest, 10, clHill, 0), num); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating dirt patches"); for (const patchSize of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)]) @@ -393,7 +394,7 @@ avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), scaleByMapSize(15, 45)); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating stone mines"); let group = new SimpleGroup( @@ -421,7 +422,7 @@ avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1), scaleByMapSize(4, 16), 100 ); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup( @@ -447,7 +448,7 @@ avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), scaleByMapSize(8, 131), 50 ); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating deer"); group = new SimpleGroup( @@ -478,7 +479,7 @@ avoidClasses(clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), 3 * numPlayers, 50 ); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [g_Gaia.tree1], @@ -496,7 +497,7 @@ avoidClasses(clHill, 2, clPlayer, 2, clDirt, 0), planetm * scaleByMapSize(13, 200) ); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating large grass tufts"); group = new SimpleGroup([ @@ -506,7 +507,7 @@ avoidClasses(clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0), planetm * scaleByMapSize(13, 200) ); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating bushes"); group = new SimpleGroup([ @@ -523,5 +524,5 @@ setSunRotation(randomAngle()); setSunElevation(Math.PI * randFloat(1/5, 1/3)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/ambush.js =================================================================== --- binaries/data/mods/public/maps/random/ambush.js +++ binaries/data/mods/public/maps/random/ambush.js @@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap(mapSettings) { setSelectedBiome(); @@ -17,9 +18,9 @@ new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.land)); - Engine.SetProgress(10); + yield 10; - const pattern = g_MapSettings.TeamPlacement || + const pattern = mapSettings.TeamPlacement || pickRandom(["line", "radial", "randomGroup", "stronghold"]); const [playerIDs, playerPosition] = createBases( @@ -34,7 +35,7 @@ if (!isNomad()) markPlayerAvoidanceArea(playerPosition, defaultPlayerBaseRadius()); - Engine.SetProgress(20); + yield 20; addElements([ { @@ -57,7 +58,7 @@ "amounts": ["tons"] } ]); - Engine.SetProgress(30); + yield 30; if (!isNomad()) createBluffsPassages(playerPosition); @@ -93,7 +94,7 @@ "amounts": ["normal"] } ]); - Engine.SetProgress(50); + yield 50; addElements(shuffleArray([ { @@ -165,7 +166,7 @@ "amounts": ["normal"] } ])); - Engine.SetProgress(70); + yield 70; addElements(shuffleArray([ { @@ -218,7 +219,7 @@ "amounts": ["many"] } ])); - Engine.SetProgress(90); + yield 90; if (isNomad()) { @@ -242,5 +243,5 @@ ]); } - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/anatolian_plateau.js =================================================================== --- binaries/data/mods/public/maps/random/anatolian_plateau.js +++ binaries/data/mods/public/maps/random/anatolian_plateau.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tPrimary = ["steppe_grass_a", "steppe_grass_c", "steppe_grass_d"]; const tGrass = ["steppe_grass_a", "steppe_grass_b", "steppe_grass_c", "steppe_grass_d"]; @@ -79,7 +80,7 @@ } }); - Engine.SetProgress(20); + yield 20; g_Map.log("Creating bumps"); createAreas( @@ -102,7 +103,7 @@ ], avoidClasses(clPlayer, 13, clForest, 20, clHill, 1), num); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating grass patches"); createLayeredPatches( @@ -122,7 +123,7 @@ scaleByMapSize(50, 90), clDirt); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating big patches"); createLayeredPatches( @@ -133,7 +134,7 @@ scaleByMapSize(30, 90), clDirt); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating stone mines"); let group = new SimpleGroup( @@ -162,7 +163,7 @@ scaleByMapSize(2, 8), 100 ); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup( @@ -186,7 +187,7 @@ scaleByMapSize(8, 131), 50 ); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating rabbits"); group = new SimpleGroup( @@ -208,7 +209,7 @@ randIntInclusive(1, 4) * numPlayers + 2, 50 ); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating sheep"); group = new SimpleGroup( @@ -220,7 +221,7 @@ 3 * numPlayers, 50 ); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oBush, oPoplar], @@ -240,7 +241,7 @@ scaleByMapSize(13, 200) ); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating bushes"); group = new SimpleGroup( @@ -261,5 +262,5 @@ setPPContrast(0.62); setPPBloom(0.2); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/archipelago.js =================================================================== --- binaries/data/mods/public/maps/random/archipelago.js +++ binaries/data/mods/public/maps/random/archipelago.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { TILE_CENTERED_HEIGHT_MAP = true; @@ -183,7 +184,7 @@ clForest, forestTrees ); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -203,7 +204,7 @@ scaleByMapSize(15, 45), clDirt ); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating stone mines"); createMines( @@ -227,7 +228,7 @@ ], clMetal ); - Engine.SetProgress(65); + yield 65; const planetm = currentBiome() == "generic/india" ? 8 : 1; createDecoration( @@ -246,7 +247,7 @@ planetm * scaleByMapAreaAbsolute(13) ], [avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), stayClasses(clLand, 5)]); - Engine.SetProgress(70); + yield 70; createFood( [ @@ -260,7 +261,7 @@ [avoidClasses(clForest, 0, clPlayer, 1, clHill, 1, clFood, 20), stayClasses(clLand, 3)], clFood); - Engine.SetProgress(75); + yield 75; createFood( [ @@ -272,7 +273,7 @@ [avoidClasses(clForest, 0, clPlayer, 1, clHill, 1, clFood, 10), stayClasses(clLand, 3)], clFood); - Engine.SetProgress(80); + yield 80; createFood( [ @@ -284,7 +285,7 @@ avoidClasses(clLand, 3, clPlayer, 2, clFood, 20), clFood); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oTree1, oTree2, oTree4, oTree3], @@ -304,5 +305,5 @@ setWaterWaviness(4.0); setWaterType("ocean"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/arctic_summer.js =================================================================== --- binaries/data/mods/public/maps/random/arctic_summer.js +++ binaries/data/mods/public/maps/random/arctic_summer.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { setFogThickness(0.46); setFogFactor(0.5); @@ -97,7 +98,7 @@ } // No decoratives }); - Engine.SetProgress(20); + yield 20; createHills( [tPrimary, tCliff, tHill], @@ -109,7 +110,7 @@ clHill, scaleByMapSize(1, 240)); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating lakes"); createAreas( @@ -126,7 +127,7 @@ avoidClasses(clPlayer, 15), scaleByMapSize(1, 20)); - Engine.SetProgress(45); + yield 45; createBumps(avoidClasses(clPlayer, 6, clWater, 2), scaleByMapSize(30, 300), 1, 8, 4, 0, 3); @@ -143,7 +144,7 @@ clWater, 2), clForest, forestTrees); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -184,7 +185,7 @@ clPlayer, 12), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating stone mines"); createMines( @@ -216,7 +217,7 @@ clRock, 5, clHill, 1), clMetal); - Engine.SetProgress(70); + yield 70; createDecoration( [ @@ -237,7 +238,7 @@ clForest, 0, clPlayer, 0, clHill, 0)); - Engine.SetProgress(75); + yield 75; createFood( [ @@ -301,7 +302,7 @@ ], clFood); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oBush, oBush2], @@ -335,5 +336,5 @@ setWaterWaviness(1); setWaterType("clap"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/ardennes_forest.js =================================================================== --- binaries/data/mods/public/maps/random/ardennes_forest.js +++ binaries/data/mods/public/maps/random/ardennes_forest.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setBiome("generic/temperate"); @@ -82,7 +83,7 @@ new LayeredPainter([tCliff, tGrass], [3]), new SmoothElevationPainter(ELEVATION_SET, heightLand, 3) ]); - Engine.SetProgress(5); + yield 5; g_Map.log("Finding hills"); const noise0 = new Noise2D(20); @@ -130,7 +131,7 @@ return 1; } - Engine.SetProgress(10); + yield 10; placePlayerBases({ "PlayerPlacement": [playerIDs, playerPosition], @@ -170,7 +171,7 @@ new ClumpPlacer(250, 0.95, 0.3, 0.1, playerPosition[i]), new TileClassPainter(clPlayer)); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating hills"); for (const size of @@ -262,7 +263,7 @@ } } - Engine.SetProgress(50); + yield 50; for (let ix = 0; ix < mapSize; ix++) for (let iz = 0; iz < mapSize; iz++) @@ -289,7 +290,7 @@ new TileClassPainter(clExplorable).paint(explorableArea); - Engine.SetProgress(55); + yield 55; // Add some general noise - after placing height dependant trees for (let ix = 0; ix < mapSize; ix++) @@ -306,7 +307,7 @@ } } - Engine.SetProgress(60); + yield 60; g_Map.log("Creating forests"); const [protoPorestTrees, stragglerTrees] = getTreeCounts(1300, 8000, 0.8); @@ -342,7 +343,7 @@ [explorableArea] ); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating grass patches"); for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)]) @@ -360,7 +361,7 @@ avoidClasses(clForest, 1, clHill, 2, clPlayer, 5), scaleByMapSize(4, 12)); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating metal mines"); createBalancedMetalMines( @@ -385,7 +386,7 @@ ] ); - Engine.SetProgress(80); + yield 80; g_Map.log("Creating wildlife"); let group = new SimpleGroup( @@ -418,7 +419,7 @@ [explorableArea] ); - Engine.SetProgress(85); + yield 85; g_Map.log("Creating berry bush"); group = new SimpleGroup( @@ -448,7 +449,7 @@ [explorableArea] ); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating straggler trees"); const types = [oOak, oOakLarge, oPine, oAleppoPine]; @@ -467,7 +468,7 @@ stragglerNum, 20, [explorableArea]); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating grass tufts"); group = new SimpleGroup( @@ -481,5 +482,5 @@ placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/atlas_mountains.js =================================================================== --- binaries/data/mods/public/maps/random/atlas_mountains.js +++ binaries/data/mods/public/maps/random/atlas_mountains.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tPrimary = ["medit_rocks_grass", "medit_rocks_grass", "medit_rocks_grass", "medit_rocks_grass", "medit_rocks_grass_shrubs", "medit_rocks_shrubs"]; @@ -86,13 +87,13 @@ "template": aGrassShort } }); - Engine.SetProgress(10); + yield 10; createBumps(avoidClasses(clPlayer, 9)); createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 8), clHill, scaleByMapSize(20, 120)); - Engine.SetProgress(25); + yield 25; const [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7); createForests( @@ -101,7 +102,7 @@ clForest, forestTrees); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -121,7 +122,7 @@ scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating stone mines"); createMines( @@ -144,7 +145,7 @@ clMetal ); - Engine.SetProgress(60); + yield 60; createDecoration( [ @@ -163,7 +164,7 @@ ], avoidClasses(clForest, 0, clPlayer, 0, clHill, 0)); - Engine.SetProgress(75); + yield 75; createFood( [ @@ -207,7 +208,7 @@ 3 * numPlayers, 50 ); - Engine.SetProgress(80); + yield 80; createStragglerTrees( [oCarob, oAleppoPine], @@ -231,5 +232,5 @@ setPPSaturation(0.56); setPPBloom(0.1); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/bahrain.js =================================================================== --- binaries/data/mods/public/maps/random/bahrain.js +++ binaries/data/mods/public/maps/random/bahrain.js @@ -21,6 +21,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap(mapSettings) { setBiome("generic/sahara"); setLandBiome(); @@ -71,7 +72,7 @@ g_Decoratives.bushMedium = "actor|props/flora/bush_desert_dry_a.xml"; g_Decoratives.bushSmall = "actor|props/flora/bush_medit_la_dry"; - const heightScale = num => num * g_MapSettings.Size / 320; + const heightScale = num => num * mapSettings.Size / 320; const heightSeaGround = heightScale(-6); const heightWaterLevel = heightScale(0); @@ -83,7 +84,7 @@ const numPlayers = getNumPlayers(); g_Map.LoadHeightmapImage("bahrain.png", 0, 15); - Engine.SetProgress(15); + yield 15; initTileClasses(["island", "shoreline"]); @@ -92,27 +93,27 @@ new MapBoundsPlacer(), new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 2), new HeightConstraint(-Infinity, heightWaterLevel)); - Engine.SetProgress(20); + yield 20; g_Map.log("Smoothing heightmap"); createArea( new MapBoundsPlacer(), new SmoothingPainter(1, scaleByMapSize(0.1, 0.5), 1)); - Engine.SetProgress(25); + yield 25; g_Map.log("Marking water"); createArea( new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.water), new HeightConstraint(-Infinity, heightWaterLevel)); - Engine.SetProgress(30); + yield 30; g_Map.log("Marking land"); createArea( new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.land), avoidClasses(g_TileClasses.water, 0)); - Engine.SetProgress(35); + yield 35; g_Map.log("Marking island"); const areaIsland = createArea( @@ -121,7 +122,7 @@ new Vector2D(fractionToTiles(0.6), mapCenter.y), Infinity), new TileClassPainter(g_TileClasses.island), avoidClasses(g_TileClasses.water, 0)); - Engine.SetProgress(37); + yield 37; g_Map.log("Painting shoreline"); createArea( @@ -131,7 +132,7 @@ new TileClassPainter(g_TileClasses.shoreline) ], new HeightConstraint(-Infinity, heightShoreline)); - Engine.SetProgress(40); + yield 40; g_Map.log("Painting cliffs"); createArea( @@ -144,7 +145,7 @@ avoidClasses(g_TileClasses.water, 2), new SlopeConstraint(2, Infinity) ]); - Engine.SetProgress(45); + yield 45; if (!isNomad()) { @@ -322,7 +323,7 @@ "amounts": ["normal"] } ])); - Engine.SetProgress(65); + yield 65; g_Map.log("Painting island"); setIslandBiome(); @@ -405,7 +406,7 @@ } ])); - Engine.SetProgress(80); + yield 80; g_Map.log("Adding more decoratives"); createObjectGroups( @@ -424,7 +425,7 @@ g_TileClasses.forest, 2), 2 * scaleByMapSize(1, 4), 20); - Engine.SetProgress(85); + yield 85; g_Map.log("Creating treasures"); for (const treasure of [g_Gaia.woodTreasure, g_Gaia.foodTreasure]) @@ -437,7 +438,7 @@ g_TileClasses.forest, 2), randIntInclusive(1, numPlayers), 20); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating shipwrecks"); createObjectGroups( @@ -446,7 +447,7 @@ stayClasses(g_TileClasses.water, 2), randIntInclusive(0, 1), 20); - Engine.SetProgress(95); + yield 95; placePlayersNomad( g_Map.createTileClass(), @@ -487,5 +488,5 @@ setPPSaturation(0.42); setPPBloom(0.23); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/belgian_uplands.js =================================================================== --- binaries/data/mods/public/maps/random/belgian_uplands.js +++ binaries/data/mods/public/maps/random/belgian_uplands.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("heightmap"); +function* GenerateMap() { const tPrimary = ["temp_grass", "temp_grass_b", "temp_grass_c", "temp_grass_d", "temp_grass_long_b", "temp_grass_clovers_2", "temp_grass_mossy", "temp_grass_plants"]; @@ -194,7 +195,7 @@ } ]; - Engine.SetProgress(5); + yield 5; const lowerHeightLimit = terrainTypes[3].upperHeightLimit; const upperHeightLimit = terrainTypes[6].upperHeightLimit; @@ -232,7 +233,7 @@ } })(); - Engine.SetProgress(60); + yield 60; g_Map.log("Painting terrain by height and add props"); // 1 means as determined in the loop, less for large maps as set below @@ -252,7 +253,7 @@ g_Map.placeEntityAnywhere(template[1], 0, position, randomAngle()); } - Engine.SetProgress(90); + yield 90; if (isNomad()) placePlayersNomad(g_Map.createTileClass(), @@ -290,5 +291,5 @@ }); } - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/botswanan_haven.js =================================================================== --- binaries/data/mods/public/maps/random/botswanan_haven.js +++ binaries/data/mods/public/maps/random/botswanan_haven.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tGrassA = "savanna_shrubs_a_wetseason"; const tGrassB = "savanna_shrubs_a"; @@ -91,7 +92,7 @@ "template": aGrassShort } }); - Engine.SetProgress(15); + yield 15; g_Map.log("Creating bumps"); createAreas( @@ -141,7 +142,7 @@ stayClasses(clWater, 1), scaleByMapSize(400, 1000), 100); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating bumps"); createAreas( @@ -160,7 +161,7 @@ ], avoidClasses(clWater, 1, clHill, 0, clDirt, 5, clPlayer, 8), scaleByMapSize(15, 45)); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating stone mines"); createObjectGroupsDeprecated( @@ -190,7 +191,7 @@ [avoidClasses(clWater, 0, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1)], scaleByMapSize(4, 16), 100); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating small decorative rocks"); createObjectGroupsDeprecated( @@ -199,7 +200,7 @@ avoidClasses(clPlayer, 1), scaleByMapSize(16, 262), 50); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating large decorative rocks"); createObjectGroupsDeprecated( @@ -213,7 +214,7 @@ avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0), scaleByMapSize(8, 131), 50); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating lions"); createObjectGroupsDeprecated( @@ -272,7 +273,7 @@ avoidClasses(clWater, 0, clForest, 0, clPlayer, 20, clHill, 1, clFood, 13), 3 * numPlayers, 50); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating rabbits"); createObjectGroupsDeprecated( @@ -317,14 +318,14 @@ avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10), randIntInclusive(1, 4) * numPlayers + 2, 50); - Engine.SetProgress(80); + yield 80; createStragglerTrees( [oToona, oBaobab, oBush, oBush], avoidClasses(clForest, 1, clWater, 1, clHill, 1, clPlayer, 13, clMetal, 4, clRock, 4), clForest, scaleByMapSize(60, 500)); - Engine.SetProgress(85); + yield 85; g_Map.log("Creating small grass tufts"); createObjectGroupsDeprecated( @@ -332,7 +333,7 @@ 0, avoidClasses(clWater, 2, clPlayer, 13, clDirt, 0), scaleByMapSize(13, 200)); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating large grass tufts"); createObjectGroupsDeprecated( @@ -343,7 +344,7 @@ 0, avoidClasses(clWater, 3, clPlayer, 13, clDirt, 1, clForest, 0), scaleByMapSize(13, 200)); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating bushes"); createObjectGroupsDeprecated( @@ -408,5 +409,5 @@ setPPSaturation(0.44); setPPBloom(0.3); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/caledonian_meadows.js =================================================================== --- binaries/data/mods/public/maps/random/caledonian_meadows.js +++ binaries/data/mods/public/maps/random/caledonian_meadows.js @@ -3,6 +3,7 @@ Engine.LoadLibrary("rmbiome"); Engine.LoadLibrary("heightmap"); +function* GenerateMap() { const tGrove = "temp_grass_plants"; const tPath = "road_rome_a"; @@ -267,7 +268,7 @@ rescaleHeightmap(heightRange.min, heightRange.max); - Engine.SetProgress(25); + yield 25; const heighLimits = [ // 0 Deep water @@ -531,7 +532,7 @@ const [playerIDs, playerPosition] = groupPlayersCycle( getStartLocationsByHeightmap({ "min": heighLimits[4], "max": heighLimits[5] }, 1000, 30)); - Engine.SetProgress(30); + yield 30; g_Map.log("Smoothing player locations"); for (const position of playerPosition) @@ -557,7 +558,7 @@ new SmoothingPainter(5, 1, 1), new NearTileClassConstraint(clPath, 5)); - Engine.SetProgress(45); + yield 45; g_Map.log("Determining resource locations"); const avoidPoints = playerPosition.map(pos => pos.clone()); @@ -569,7 +570,7 @@ }, avoidPoints, clPath); - Engine.SetProgress(55); + yield 55; /** * Divide tiles in areas by height and avoid paths @@ -610,7 +611,7 @@ g_Map.placeEntityPassable(pickRandom(selectedBiome.entity), 0, randomPositionOnTile(point), randomAngle()); } - Engine.SetProgress(80); + yield 80; g_Map.log("Placing players"); if (isNomad()) @@ -640,5 +641,5 @@ placeCamp(pos); } - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/cantabrian_highlands.js =================================================================== --- binaries/data/mods/public/maps/random/cantabrian_highlands.js +++ binaries/data/mods/public/maps/random/cantabrian_highlands.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -133,7 +134,7 @@ "template": aGrassShort } }); - Engine.SetProgress(10); + yield 10; g_Map.log("Creating lakes"); const numLakes = Math.round(scaleByMapSize(1, 4) * numPlayers); @@ -147,7 +148,7 @@ avoidClasses(clPlayer, 2, clWater, 20), numLakes ); - Engine.SetProgress(15); + yield 15; g_Map.log("Creating reeds"); const group = new SimpleGroup( @@ -158,7 +159,7 @@ numLakes, 100, waterAreas ); - Engine.SetProgress(20); + yield 20; g_Map.log("Creating fish"); createObjectGroupsByAreas( @@ -172,14 +173,14 @@ 50, waterAreas ); - Engine.SetProgress(25); + yield 25; createBumps(avoidClasses(clWater, 2, clPlayer, 0)); - Engine.SetProgress(30); + yield 30; createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 2, clWater, 5, clHill, 15), clHill, scaleByMapSize(1, 4) * numPlayers); - Engine.SetProgress(35); + yield 35; const [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1)); createDefaultForests( @@ -187,7 +188,7 @@ avoidClasses(clPlayer, 1, clWater, 3, clForest, 17, clHill, 1), clForest, forestTrees); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -197,7 +198,7 @@ avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 0), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(45); + yield 45; g_Map.log("Creating grass patches"); createLayeredPatches( @@ -207,7 +208,7 @@ avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 0), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating metal mines"); createBalancedMetalMines( @@ -225,7 +226,7 @@ avoidClasses(clWater, 0, clForest, 0, clPlayer, scaleByMapSize(15, 25), clHill, 1, clMetal, 10) ); - Engine.SetProgress(60); + yield 60; createDecoration( [ @@ -243,7 +244,7 @@ scaleByMapAreaAbsolute(13) ], avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0)); - Engine.SetProgress(70); + yield 70; createFood( [ @@ -256,7 +257,7 @@ ], avoidClasses(clWater, 0, clForest, 0, clPlayer, 1, clHill, 1, clFood, 20), clFood); - Engine.SetProgress(80); + yield 80; createFood( [ @@ -267,14 +268,14 @@ ], avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10), clFood); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oOak, oOakLarge, oPine, oApple], avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 1, clMetal, 6, clRock, 6), clForest, stragglerTrees); - Engine.SetProgress(90); + yield 90; placePlayersNomad(clPlayer, avoidClasses(clWater, 4, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2)); @@ -290,5 +291,5 @@ setFogThickness(0.25); setFogFactor(0.4); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/canyon.js =================================================================== --- binaries/data/mods/public/maps/random/canyon.js +++ binaries/data/mods/public/maps/random/canyon.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -226,7 +227,7 @@ "template": aGrassShort } }); - Engine.SetProgress(20); + yield 20; paintTerrainBasedOnHeight(3.1, 29, 0, tCliff); paintTileClassBasedOnHeight(3.1, 32, 0, clHill2); @@ -247,7 +248,7 @@ clForest, forestTrees); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -299,7 +300,7 @@ clMetal ); - Engine.SetProgress(65); + yield 65; let planetm = 1; @@ -334,7 +335,7 @@ scaleByMapSize(200, 800), 50 ); - Engine.SetProgress(70); + yield 70; createFood( [ @@ -364,7 +365,7 @@ ], clFood); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oTree1, oTree2, oTree4, oTree3], @@ -391,5 +392,5 @@ avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clHill2, 4, clFood, 2) ]); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/continent.js =================================================================== --- binaries/data/mods/public/maps/random/continent.js +++ binaries/data/mods/public/maps/random/continent.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -103,7 +104,7 @@ new TileClassPainter(clLand) ]); - Engine.SetProgress(20); + yield 20; paintTerrainBasedOnHeight(3, 4, 3, tMainTerrain); paintTerrainBasedOnHeight(1, 3, 0, tShore); @@ -136,7 +137,7 @@ "template": aGrassShort } }); - Engine.SetProgress(30); + yield 30; createBumps([avoidClasses(clPlayer, 10), stayClasses(clLand, 5)]); @@ -158,7 +159,7 @@ clForest, forestTrees); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -176,7 +177,7 @@ [avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), stayClasses(clLand, 5)], scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating metal mines"); createBalancedMetalMines( @@ -200,7 +201,7 @@ ] ); - Engine.SetProgress(65); + yield 65; // create decoration let planetm = 1; @@ -225,7 +226,7 @@ ], [avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), stayClasses(clLand, 5)]); - Engine.SetProgress(70); + yield 70; createFood( [ @@ -259,7 +260,7 @@ avoidClasses(clLand, 2, clFood, 20), clFood); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oTree1, oTree2, oTree4, oTree3], @@ -280,5 +281,5 @@ setWaterWaviness(1.0); setWaterType("ocean"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/corinthian_isthmus.js =================================================================== --- binaries/data/mods/public/maps/random/corinthian_isthmus.js +++ binaries/data/mods/public/maps/random/corinthian_isthmus.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -180,7 +181,7 @@ "template": aBush1 } }); - Engine.SetProgress(40); + yield 40; createBumps(avoidClasses(clWater, 2, clPlayer, 20)); @@ -191,7 +192,7 @@ clForest, forestTrees); - Engine.SetProgress(50); + yield 50; if (randBool()) createHills([tGrass, tCliff, tHill], @@ -213,7 +214,7 @@ scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -224,7 +225,7 @@ scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating stone mines in the middle"); createObjectGroups( @@ -253,7 +254,7 @@ 0.9 // less available area -> slightly less metal ); - Engine.SetProgress(65); + yield 65; createDecoration( [ @@ -280,7 +281,7 @@ clRock, 6, clMetal, 6)); - Engine.SetProgress(70); + yield 70; createFood( [ @@ -333,7 +334,7 @@ clMetal, 6), clFood); - Engine.SetProgress(90); + yield 90; createStragglerTrees( [oDatePalm, oSDatePalm, oCarob, oFanPalm, oPoplar, oCypress], @@ -377,5 +378,5 @@ setWaterType("ocean"); setWaterMurkiness(0.49); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/corsica.js =================================================================== --- binaries/data/mods/public/maps/random/corsica.js +++ binaries/data/mods/public/maps/random/corsica.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tGrass = ["medit_grass_field", "medit_grass_field_b", "temp_grass_c"]; const tLushGrass = ["medit_grass_field", "medit_grass_field_a"]; @@ -219,7 +220,7 @@ } } } - Engine.SetProgress(30); + yield 30; g_Map.log("Determining player locations"); const playerIDs = sortAllPlayers(); @@ -267,7 +268,7 @@ } // Sufficient starting trees around, no decoratives }); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating bumps"); createAreas( @@ -361,7 +362,7 @@ return undefined; } - Engine.SetProgress(65); + yield 65; g_Map.log("Creating mines"); for (const mine of [eMetalMine, eStoneMine]) @@ -426,7 +427,7 @@ scaleByMapSize(350, 2500), 100); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating small decorative rocks"); createObjectGroupsDeprecated( @@ -500,7 +501,7 @@ scaleByMapSize(100, 600), 50); - Engine.SetProgress(80); + yield 80; g_Map.log("Creating animals"); createObjectGroupsDeprecated( @@ -524,7 +525,7 @@ scaleByMapSize(50, 150), 100); - Engine.SetProgress(95); + yield 95; placePlayersNomad(clPlayer, avoidClasses(clWater, 4, clForest, 1, clBaseResource, 4, clCliffs, 4)); @@ -541,5 +542,5 @@ setWaterWaviness(2.0); setWaterType("ocean"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/cycladic_archipelago.js =================================================================== --- binaries/data/mods/public/maps/random/cycladic_archipelago.js +++ binaries/data/mods/public/maps/random/cycladic_archipelago.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tOceanRockDeep = "medit_sea_coral_deep"; const tOceanCoral = "medit_sea_coral_plants"; @@ -168,7 +169,7 @@ } // No decoratives }); - Engine.SetProgress(20); + yield 20; g_Map.log("Creating bumps"); createAreasInAreas( @@ -178,7 +179,7 @@ scaleByMapSize(25, 75), 15, areas); - Engine.SetProgress(34); + yield 34; g_Map.log("Creating hills"); createAreasInAreas( @@ -192,7 +193,7 @@ scaleByMapSize(5, 30), 15, areas); - Engine.SetProgress(38); + yield 38; paintTileClassBasedOnHeight(-Infinity, 0, Elevation_ExcludeMin_ExcludeMax, clWater); @@ -215,7 +216,7 @@ scaleByMapSize(10, 64), 20, areas); - Engine.SetProgress(42); + yield 42; g_Map.log("Creating stone mines"); let group = new SimpleGroup( @@ -227,7 +228,7 @@ [avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 5, clRock, 6)], scaleByMapSize(4, 16), 200, areas ); - Engine.SetProgress(46); + yield 46; g_Map.log("Creating small stone mines"); group = new SimpleGroup([new SimpleObject(oStoneSmall, 2, 5, 1, 3)], true, clRock); @@ -235,7 +236,7 @@ [avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 5, clRock, 6)], scaleByMapSize(4, 16), 200, areas ); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating metal mines"); group = new SimpleGroup([new SimpleObject(oMetalLarge, 1, 1, 0, 4)], true, clMetal); @@ -243,7 +244,7 @@ [avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 5, clMetal, 6, clRock, 6)], scaleByMapSize(4, 16), 200, areas ); - Engine.SetProgress(54); + yield 54; g_Map.log("Creating shrub patches"); for (const size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)]) @@ -257,7 +258,7 @@ scaleByMapSize(4, 16), 20, areas); - Engine.SetProgress(58); + yield 58; g_Map.log("Creating grass patches"); for (const size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)]) @@ -271,7 +272,7 @@ scaleByMapSize(4, 16), 20, areas); - Engine.SetProgress(62); + yield 62; g_Map.log("Creating straggler trees"); for (const tree of [oCarob, oBeech, oLombardyPoplar, oLombardyPoplar, oPine]) @@ -289,7 +290,7 @@ clHill, 1), scaleByMapSize(2, 38), 50, areas ); - Engine.SetProgress(66); + yield 66; g_Map.log("Create straggler cypresses"); group = new SimpleGroup( @@ -308,7 +309,7 @@ clHill, 1), scaleByMapSize(5, 75), 50, areas ); - Engine.SetProgress(70); + yield 70; g_Map.log("Create straggler date palms"); group = new SimpleGroup( @@ -327,7 +328,7 @@ clHill, 1), scaleByMapSize(5, 75), 50, areas ); - Engine.SetProgress(74); + yield 74; g_Map.log("Creating rocks"); group = new SimpleGroup( @@ -341,7 +342,7 @@ avoidClasses(clWater, 0, clCity, 0), scaleByMapSize(30, 180), 50 ); - Engine.SetProgress(78); + yield 78; g_Map.log("Creating deer"); group = new SimpleGroup( @@ -352,7 +353,7 @@ avoidClasses(clWater, 5, clForest, 1, clHill, 1, clCity, 10, clMetal, 6, clRock, 4, clFood, 8), 3 * numPlayers, 50 ); - Engine.SetProgress(82); + yield 82; g_Map.log("Creating berry bushes"); group = new SimpleGroup([new SimpleObject(oBerryBush, 5, 7, 0, 3)], true, clFood); @@ -360,7 +361,7 @@ avoidClasses(clWater, 2, clForest, 1, clHill, 1, clCity, 10, clMetal, 6, clRock, 4, clFood, 8), 1.5 * numPlayers, 100 ); - Engine.SetProgress(86); + yield 86; g_Map.log("Creating Fish"); group = new SimpleGroup([new SimpleObject(oFish, 1, 1, 0, 3)], true, clFood); @@ -368,7 +369,7 @@ [stayClasses(clWater, 1), avoidClasses(clFood, 8)], scaleByMapSize(40, 200), 100 ); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating Whales"); group = new SimpleGroup([new SimpleObject(oWhale, 1, 1, 0, 3)], true, clFood); @@ -376,7 +377,7 @@ [stayClasses(clWater, 1), avoidClasses(clFood, 8, clPlayer, 4, clIsland, 4)], scaleByMapSize(10, 40), 100 ); - Engine.SetProgress(94); + yield 94; g_Map.log("Creating shipwrecks"); group = new SimpleGroup([new SimpleObject(oShipwreck, 1, 1, 0, 3)], true, clFood); @@ -384,7 +385,7 @@ [stayClasses(clWater, 1), avoidClasses(clFood, 8)], scaleByMapSize(6, 16), 100 ); - Engine.SetProgress(98); + yield 98; g_Map.log("Creating shipwreck debris"); group = new SimpleGroup([new SimpleObject(oShipDebris, 1, 2, 0, 4)], true, clFood); @@ -392,7 +393,7 @@ [stayClasses(clWater, 1), avoidClasses(clFood, 8)], scaleByMapSize(10, 20), 100 ); - Engine.SetProgress(99); + yield 99; placePlayersNomad(clPlayer, avoidClasses( @@ -411,5 +412,5 @@ setWaterWaviness(3.0); setWaterType("ocean"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/danubius.js =================================================================== --- binaries/data/mods/public/maps/random/danubius.js +++ binaries/data/mods/public/maps/random/danubius.js @@ -1,8 +1,9 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap(mapSettings) { - const day = g_MapSettings.Daytime !== undefined ? g_MapSettings.Daytime == "day" : randBool(2/3); + const day = mapSettings.Daytime !== undefined ? mapSettings.Daytime == "day" : randBool(2/3); // Spawn ships away from the shoreline, but patrol close to the shoreline const triggerPointShipSpawn = "trigger/trigger_point_A"; @@ -779,7 +780,7 @@ clPath, 1), clFood); - Engine.SetProgress(90); + yield 90; createStragglerTrees( treeTypes, @@ -802,7 +803,7 @@ clForest, stragglerTrees * 7); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating animals on islands"); createFood( @@ -822,7 +823,7 @@ ], clFood); - Engine.SetProgress(98); + yield 98; g_Map.log("Creating treasures"); createObjectGroupsByAreas( @@ -1041,5 +1042,5 @@ setWaterMurkiness(0.97); setWaterHeight(21); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/deep_forest.js =================================================================== --- binaries/data/mods/public/maps/random/deep_forest.js +++ binaries/data/mods/public/maps/random/deep_forest.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const templateStone = "gaia/rock/temperate_small"; const templateStoneMine = "gaia/rock/temperate_large"; @@ -119,7 +120,7 @@ Vector2D.add(mapCenter, new Vector2D(randFloat(minPlayerRadius, maxPlayerRadius), 0) .rotate(-playerAngle[i]).round()); } - Engine.SetProgress(10); + yield 10; placePlayerBases({ "PlayerPlacement": [playerIDs, playerPosition], @@ -158,7 +159,7 @@ "count": 2 } }); - Engine.SetProgress(30); + yield 30; g_Map.log("Painting paths"); const pathBlending = numPlayers <= 4; @@ -178,7 +179,7 @@ ], avoidClasses(clBaseResource, 4)); } - Engine.SetProgress(50); + yield 50; g_Map.log("Placing expansion resources"); for (let i = 0; i < numPlayers; ++i) @@ -204,7 +205,7 @@ new TileClassPainter(clHill) ]); } - Engine.SetProgress(60); + yield 60; g_Map.log("Placing temple"); g_Map.placeEntityPassable(templateTemple, 0, mapCenter, randomAngle()); @@ -255,9 +256,9 @@ const hVarHills = 5 * (1 + Math.sin(x / 10) * Math.sin(z / 10)); g_Map.setHeight(position, g_Map.getHeight(position) + hVarMiddleHill + hVarHills + 1); } - Engine.SetProgress(95); + yield 95; placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clBaseResource, 4, clHill, 4)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/dodecanese.js =================================================================== --- binaries/data/mods/public/maps/random/dodecanese.js +++ binaries/data/mods/public/maps/random/dodecanese.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { TILE_CENTERED_HEIGHT_MAP = true; @@ -123,7 +124,7 @@ new SmoothElevationPainter(ELEVATION_SET, heightLand, 4), new TileClassPainter(clIsland) ].concat(isNomad() ? [] : [new TileClassPainter(clPlayerIsland)])); - Engine.SetProgress(10); + yield 10; g_Map.log("Creating islands"); createAreas( @@ -135,7 +136,7 @@ ], avoidClasses(clIsland, 6), scaleByMapSize(25, 80)); - Engine.SetProgress(20); + yield 20; // Notice that the Constraints become much shorter when avoiding water // rather than staying on islands @@ -144,7 +145,7 @@ new MapBoundsPlacer(), new TileClassPainter(clWater), new HeightConstraint(-Infinity, heightShoreLower)); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating undersea bumps"); createAreas( @@ -152,7 +153,7 @@ new SmoothElevationPainter(ELEVATION_SET, heightSeaBump, 3), avoidClasses(clIsland, 2), scaleByMapSize(10, 50)); - Engine.SetProgress(35); + yield 35; g_Map.log("Creating volcano"); const areasVolcano = createAreas( @@ -170,7 +171,7 @@ 200); createBumps(avoidClasses(clWater, 0, clPlayer, 10, clVolcano, 0)); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating large bumps"); createAreas( @@ -178,7 +179,7 @@ new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 3), avoidClasses(clWater, 2, clVolcano, 0, clPlayer, 10), scaleByMapSize(20, 200)); - Engine.SetProgress(45); + yield 45; g_Map.log("Creating hills"); createAreas( @@ -190,7 +191,7 @@ ], avoidClasses(clWater, 1, clPlayer, 12, clVolcano, 0, clHill, 15), scaleByMapSize(4, 13)); - Engine.SetProgress(50); + yield 50; g_Map.log("Painting corals"); paintTerrainBasedOnHeight(-Infinity, heightCoralsLower, Elevation_IncludeMin_ExcludeMax, tWater); @@ -212,7 +213,7 @@ new HeightPlacer(Elevation_IncludeMin_ExcludeMax, heightShoreUpper, heightLand), new TerrainPainter(tShoreUpper), avoidClasses(clVolcano, 0)); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -222,7 +223,7 @@ avoidClasses(clWater, 4, clVolcano, 2, clForest, 1, clDirt, 2, clGrass, 2, clHill, 1), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(65); + yield 65; placePlayerBases({ "PlayerPlacement": [playerIDs, playerPosition], @@ -250,7 +251,7 @@ "template": aBush1 } }); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating stone mines"); createMines( @@ -271,7 +272,7 @@ clRock, 4), clRock, scaleByMapSize(4, 16)); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating metal mines"); createMines( @@ -289,7 +290,7 @@ clRock, 4), clMetal, scaleByMapSize(4, 16)); - Engine.SetProgress(80); + yield 80; placePlayersNomad(clPlayer, avoidClasses(clWater, 12, clVolcano, 4, clMetal, 4, clRock, 4, clHill, 4)); @@ -308,7 +309,7 @@ clForest, forestTrees, 200); - Engine.SetProgress(85); + yield 85; createFood( [ @@ -335,7 +336,7 @@ clRock, 4), clFood); - Engine.SetProgress(87); + yield 87; createFood( [ @@ -480,7 +481,7 @@ 20, areasVolcano); } - Engine.SetProgress(90); + yield 90; setSkySet("cumulus"); setSunColor(0.87, 0.78, 0.49); @@ -498,5 +499,5 @@ setPPSaturation(0.51); setPPBloom(0.12); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/elephantine.js =================================================================== --- binaries/data/mods/public/maps/random/elephantine.js +++ binaries/data/mods/public/maps/random/elephantine.js @@ -18,6 +18,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap(mapSettings) { TILE_CENTERED_HEIGHT_MAP = true; @@ -151,7 +152,7 @@ const heightSeaGround = -6; const heightWaterLevel = 0; const heightShore = 0.5; - const heightOffsetPath = -g_MapSettings.Size / 80; + const heightOffsetPath = -mapSettings.Size / 80; const minHeight = -1; const maxHeight = 2; @@ -185,7 +186,7 @@ clTemple, 11, clCliff, 0, clStatue, 2, clSoldier, 3, clTower, 2, clTreasure, 1); g_Map.LoadHeightmapImage("elephantine.png", minHeight, maxHeight); - Engine.SetProgress(3); + yield 3; g_Map.log("Lowering sea ground"); createArea( @@ -195,13 +196,13 @@ new TileClassPainter(clWater) ], new HeightConstraint(-Infinity, heightWaterLevel)); - Engine.SetProgress(6); + yield 6; g_Map.log("Smoothing heightmap"); createArea( new MapBoundsPlacer(), new SmoothingPainter(1, scaleByMapSize(0.1, 0.5), 1)); - Engine.SetProgress(10); + yield 10; g_Map.log("Marking islands"); const areaIsland = createArea( @@ -217,21 +218,21 @@ Infinity), new TileClassPainter(clIsland), avoidClasses(clPlayer, 0, clWater, 0)); - Engine.SetProgress(13); + yield 13; g_Map.log("Painting islands"); createArea( new MapBoundsPlacer(), new TerrainPainter(tGrass), stayClasses(clIsland, 0)); - Engine.SetProgress(16); + yield 16; g_Map.log("Painting water and shoreline"); createArea( new MapBoundsPlacer(), new TerrainPainter(tWater), new HeightConstraint(-Infinity, heightShore)); - Engine.SetProgress(19); + yield 19; placePlayerBases({ "PlayerPlacement": playerPlacementRiver(riverAngle, fractionToTiles(0.62)), @@ -262,7 +263,7 @@ "template": pickRandom(aBushesDesert) } }); - Engine.SetProgress(22); + yield 22; g_Map.log("Creating temple"); const groupTemple = createObjectGroupsByAreas( @@ -273,7 +274,7 @@ 1, 200, [areaIsland]); - Engine.SetProgress(34); + yield 34; g_Map.log("Creating pyramid"); const groupPyramid = createObjectGroupsByAreas( @@ -288,7 +289,7 @@ 1, 200, [areaIsland]); - Engine.SetProgress(37); + yield 37; g_Map.log("Painting city patches"); const cityCenters = [ @@ -303,7 +304,7 @@ new DiskPlacer(cityCenter.radius, cityCenter.pos), new LayeredPainter([tRoadWildIsland, tRoadIsland], [2]), stayClasses(clIsland, 2))); - Engine.SetProgress(40); + yield 40; g_Map.log("Painting city path"); if (cityCenters.length == 2) @@ -314,11 +315,11 @@ new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetPath, 4), new TileClassPainter(clPath) ]); - Engine.SetProgress(42); + yield 42; createBumps(avoidClasses(clPlayer, 10, clWater, 2, clTemple, 10, clPath, 1), scaleByMapSize(10, 500), 1, 8, 4, 0.2, 3); - Engine.SetProgress(43); + yield 43; g_Map.log("Marking cliffs"); createArea( @@ -328,7 +329,7 @@ avoidClasses(clWater, 2), new SlopeConstraint(2, Infinity) ]); - Engine.SetProgress(44); + yield 44; g_Map.log("Creating stone mines"); createMines( @@ -342,7 +343,7 @@ avoidClasses(clWater, 4, clCliff, 4, clPlayer, 20, clRock, 10, clPath, 1), clRock, scaleByMapSize(6, 24)); - Engine.SetProgress(45); + yield 45; g_Map.log("Creating metal mines"); createMines( @@ -356,7 +357,7 @@ avoidClasses(clWater, 4, clCliff, 4, clPlayer, 20, clMetal, 10, clRock, 5, clPath, 1), clMetal, scaleByMapSize(6, 24)); - Engine.SetProgress(46); + yield 46; g_Map.log("Creating kushite towers"); createObjectGroups( @@ -370,7 +371,7 @@ ], scaleByMapSize(4, 12), 200); - Engine.SetProgress(49); + yield 49; const [forestTrees, stragglerTrees] = getTreeCounts(400, 3000, 0.7); createForests( @@ -378,7 +379,7 @@ [avoidCollisions, avoidClasses(clIsland, 0, clPlayer, 20, clForest, 18, clWater, 2)], clForest, forestTrees / 2); - Engine.SetProgress(52); + yield 52; createForests( [ @@ -391,7 +392,7 @@ [stayClasses(clIsland, 0), avoidClasses(clForest, 15, clWater, 2), avoidCollisions], clForest, forestTrees / 2); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating dirt patches"); createPatches( @@ -400,7 +401,7 @@ avoidClasses(clWater, 0, clIsland, 0, clForest, 0, clDirt, 5, clPlayer, 12), scaleByMapSize(5, 30), clDirt); - Engine.SetProgress(58); + yield 58; g_Map.log("Creating statues"); createObjectGroupsByAreas( @@ -414,7 +415,7 @@ scaleByMapSize(2, 10), 400, [areaIsland]); - Engine.SetProgress(61); + yield 61; g_Map.log("Creating treasure"); createObjectGroupsByAreas( @@ -424,7 +425,7 @@ scaleByMapSize(4, 10), 100, areaCityPatch); - Engine.SetProgress(62); + yield 62; g_Map.log("Creating hero"); createObjectGroups( @@ -437,7 +438,7 @@ ], 1, 500); - Engine.SetProgress(64); + yield 64; g_Map.log("Creating soldiers"); createObjectGroups( @@ -453,7 +454,7 @@ ], scaleByMapSize(12, 60), 200); - Engine.SetProgress(67); + yield 67; g_Map.log("Creating berries"); createObjectGroups( @@ -462,7 +463,7 @@ avoidCollisions, scaleByMapSize(4, 12), 250); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating rhinos"); createObjectGroups( @@ -471,7 +472,7 @@ avoidCollisions, scaleByMapSize(2, 10), 50); - Engine.SetProgress(73); + yield 73; g_Map.log("Creating warthog"); createObjectGroups( @@ -480,7 +481,7 @@ avoidCollisions, scaleByMapSize(2, 10), 50); - Engine.SetProgress(77); + yield 77; g_Map.log("Creating gazelles"); createObjectGroups( @@ -489,7 +490,7 @@ [avoidClasses(clIsland, 1), avoidCollisions], scaleByMapSize(2, 10), 50); - Engine.SetProgress(80); + yield 80; g_Map.log("Creating giraffes"); createObjectGroups( @@ -502,7 +503,7 @@ avoidCollisions, scaleByMapSize(2, 10), 50); - Engine.SetProgress(83); + yield 83; if (!isNomad()) { @@ -517,7 +518,7 @@ avoidCollisions, scaleByMapSize(2, 10), 50); - Engine.SetProgress(87); + yield 87; } g_Map.log("Creating elephants"); @@ -531,7 +532,7 @@ avoidCollisions, scaleByMapSize(2, 10), 50); - Engine.SetProgress(88); + yield 88; g_Map.log("Creating crocodiles"); createObjectGroups( @@ -543,12 +544,12 @@ ], scaleByMapSize(2, 10), 50); - Engine.SetProgress(89); + yield 89; g_Map.log("Creating hawk"); for (let i = 0; i < scaleByMapSize(0, 2); ++i) g_Map.placeEntityAnywhere(oHawk, 0, mapCenter, randomAngle()); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating fish"); createObjectGroups( @@ -557,41 +558,41 @@ [stayClasses(clWater, 8), avoidClasses(clFood, 16)], scaleByMapSize(15, 80), 50); - Engine.SetProgress(91); + yield 91; createStragglerTrees( [oAcacia], avoidCollisions, clForest, stragglerTrees); - Engine.SetProgress(93); + yield 93; placePlayersNomad(clPlayer, [avoidCollisions, avoidClasses(clIsland, 0)]); - Engine.SetProgress(95); + yield 95; createDecoration( aBushesDesert.map(bush => [new SimpleObject(bush, 0, 3, 2, 4)]), aBushesDesert.map(bush => scaleByMapSize(20, 150) * randIntInclusive(1, 3)), [avoidClasses(clIsland, 0), avoidCollisions]); - Engine.SetProgress(96); + yield 96; createDecoration( aBushesIslands.map(bush => [new SimpleObject(bush, 0, 4, 2, 4)]), aBushesIslands.map(bush => scaleByMapSize(20, 150) * randIntInclusive(1, 3)), [stayClasses(clIsland, 0), avoidCollisions]); - Engine.SetProgress(97); + yield 97; createDecoration( [[new SimpleObject(aRock, 0, 4, 2, 4)]], [[scaleByMapSize(80, 500)]], [avoidClasses(clIsland, 0), avoidCollisions]); - Engine.SetProgress(98); + yield 98; createDecoration( aBushesShoreline.map(bush => [new SimpleObject(bush, 0, 3, 2, 4)]), aBushesShoreline.map(bush => scaleByMapSize(200, 1000)), [new HeightConstraint(heightWaterLevel, heightShore), avoidCollisions]); - Engine.SetProgress(99); + yield 99; g_Environment = { "SkySet": "cloudless", @@ -648,5 +649,5 @@ } }; - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/empire.js =================================================================== --- binaries/data/mods/public/maps/random/empire.js +++ binaries/data/mods/public/maps/random/empire.js @@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -14,7 +15,7 @@ new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.land)); - Engine.SetProgress(10); + yield 10; const teamsArray = getTeamsArray(); const startAngle = randomAngle(); @@ -26,7 +27,7 @@ startAngle, undefined), false); - Engine.SetProgress(20); + yield 20; // Change the starting angle and add the players again let rotation = Math.PI; @@ -45,7 +46,7 @@ startAngle + rotation, undefined), false); - Engine.SetProgress(40); + yield 40; addElements(shuffleArray([ { @@ -92,7 +93,7 @@ "amounts": ["tons"] } ])); - Engine.SetProgress(50); + yield 50; addElements([ { @@ -125,7 +126,7 @@ "amounts": ["normal"] } ]); - Engine.SetProgress(60); + yield 60; addElements(shuffleArray([ { @@ -179,7 +180,7 @@ "amounts": ["few", "normal", "many", "tons"] } ])); - Engine.SetProgress(80); + yield 80; addElements(shuffleArray([ { @@ -234,7 +235,7 @@ "amounts": g_AllAmounts } ])); - Engine.SetProgress(90); + yield 90; placePlayersNomad( g_TileClasses.player, @@ -246,5 +247,5 @@ g_TileClasses.mountain, 4, g_TileClasses.animals, 2)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/english_channel.js =================================================================== --- binaries/data/mods/public/maps/random/english_channel.js +++ binaries/data/mods/public/maps/random/english_channel.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tPrimary = "temp_grass_long"; const tGrass = ["temp_grass", "temp_grass", "temp_grass_d"]; @@ -91,7 +92,7 @@ "template": aGrassShort } }); - Engine.SetProgress(10); + yield 10; paintRiver({ "parallel": false, @@ -112,7 +113,7 @@ } }); - Engine.SetProgress(20); + yield 20; createTributaryRivers( startAngle, @@ -128,14 +129,14 @@ paintTerrainBasedOnHeight(-5, 1, 1, tWater); paintTerrainBasedOnHeight(1, heightLand, 1, tShore); paintTileClassBasedOnHeight(-6, 0.5, 1, clWater); - Engine.SetProgress(25); + yield 25; createBumps(avoidClasses(clWater, 5, clPlayer, 20)); - Engine.SetProgress(30); + yield 30; createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 20, clHill, 15, clWater, 5), clHill, scaleByMapSize(1, 4) * numPlayers); - Engine.SetProgress(50); + yield 50; const [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7); createForests( @@ -143,7 +144,7 @@ avoidClasses(clPlayer, 20, clForest, 17, clHill, 0, clWater, 6), clForest, forestTrees); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -162,7 +163,7 @@ avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 6), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(80); + yield 80; g_Map.log("Creating stone mines"); createMines( @@ -184,7 +185,7 @@ avoidClasses(clWater, 2, clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 2), clMetal ); - Engine.SetProgress(85); + yield 85; createDecoration( [ @@ -270,5 +271,5 @@ placePlayersNomad(clPlayer, avoidClasses(clWater, 4, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/extinct_volcano.js =================================================================== --- binaries/data/mods/public/maps/random/extinct_volcano.js +++ binaries/data/mods/public/maps/random/extinct_volcano.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tHillDark = "cliff volcanic light"; const tHillMedium1 = "ocean_rock_a"; @@ -109,7 +110,7 @@ ]); } - Engine.SetProgress(8); + yield 8; placePlayerBases({ "PlayerPlacement": [playerIDs, playerPosition], @@ -136,10 +137,10 @@ } // No decoratives }); - Engine.SetProgress(15); + yield 15; createVolcano(mapCenter, clHill, tHillVeryDark, undefined, false, ELEVATION_SET); - Engine.SetProgress(20); + yield 20; g_Map.log("Creating lakes"); createAreas( @@ -151,12 +152,12 @@ ], avoidClasses(clPlayer, 0, clHill, 2, clWater, 12), Math.round(scaleByMapSize(6, 12))); - Engine.SetProgress(25); + yield 25; createBumps(avoidClasses(clPlayer, 0, clHill, 0), scaleByMapSize(50, 300), 1, 10, 3, 0, scaleByMapSize(4, 10)); paintTileClassBasedOnHeight(10, 100, 0, clBumps); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating hills"); createAreas( @@ -168,7 +169,7 @@ ], avoidClasses(clPlayer, 0, clHill, 15, clWater, 2, clBaseResource, 2), scaleByMapSize(2, 8) * numPlayers); - Engine.SetProgress(35); + yield 35; g_Map.log("Creating forests"); const [forestTrees, stragglerTrees] = getTreeCounts(1200, 3000, 0.7); @@ -191,7 +192,7 @@ clHill, 0, clWater, 2), num); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating hill patches"); for (const patchSize of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)]) @@ -216,7 +217,7 @@ clPlayer, 0), scaleByMapSize(20, 80)); } - Engine.SetProgress(45); + yield 45; g_Map.log("Creating grass patches"); createLayeredPatches( @@ -232,7 +233,7 @@ clPlayer, 0), scaleByMapSize(3, 8), clDirt); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating stone mines"); createObjectGroupsDeprecated( @@ -255,7 +256,7 @@ ], 100, 100); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating small stone quarries"); createObjectGroupsDeprecated( @@ -272,7 +273,7 @@ ], 100, 100); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating metal mines"); createObjectGroupsDeprecated( @@ -290,7 +291,7 @@ ], 100, 100); - Engine.SetProgress(65); + yield 65; if (!isNomad()) { @@ -311,7 +312,7 @@ 500, 1); } - Engine.SetProgress(67); + yield 67; createDecoration( [ @@ -340,7 +341,7 @@ clPlayer, 0, clHill, 0) ]); - Engine.SetProgress(70); + yield 70; createDecoration( [ @@ -362,7 +363,7 @@ clPlayer, 0, clHill, 0 )); - Engine.SetProgress(75); + yield 75; createFood( [ @@ -382,7 +383,7 @@ clFood, 20) ], clFood); - Engine.SetProgress(78); + yield 78; createFood( [ @@ -402,7 +403,7 @@ stayClasses(clForest, 2) ], clFood); - Engine.SetProgress(81); + yield 81; createFood( [ @@ -416,7 +417,7 @@ avoidClasses(clWater, 1, clForest, 0, clPlayer, 0, clHill, 1, clFood, 10) ], clFood); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oTree, oTree2, oTree3, oTree4, oBush], @@ -433,7 +434,7 @@ clForest, stragglerTrees); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating straggler bushes"); createObjectGroupsDeprecated( @@ -453,7 +454,7 @@ clRock, 4) ], stragglerTrees); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating rain drops"); createObjectGroupsDeprecated( @@ -464,7 +465,7 @@ 0, avoidClasses(clRain, 5), scaleByMapSize(80, 250)); - Engine.SetProgress(98); + yield 98; placePlayersNomad(clPlayer, avoidClasses(clWater, 4, clHill, 4, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2)); @@ -478,5 +479,5 @@ setPPEffect("hdr"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/fields_of_meroe.js =================================================================== --- binaries/data/mods/public/maps/random/fields_of_meroe.js +++ binaries/data/mods/public/maps/random/fields_of_meroe.js @@ -2,8 +2,9 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap(mapSettings) { - if (g_MapSettings.Biome) + if (mapSettings.Biome) setSelectedBiome(); else setBiome("fields_of_meroe/dry"); @@ -136,7 +137,7 @@ } } }); - Engine.SetProgress(10); + yield 10; g_Map.log("Creating cataracts"); for (const x of [fractionToTiles(randFloat(0.15, 0.25)), fractionToTiles(randFloat(0.75, 0.85))]) @@ -208,7 +209,7 @@ "count": 3 } }); - Engine.SetProgress(15); + yield 15; g_Map.log("Getting random coordinates for Kushite settlements"); const kushiteTownPositions = []; @@ -247,7 +248,7 @@ avoidClasses(clPlayer, 20, clForest, 5, clKushiteVillages, 30, clRiver, 10), scaleByMapSize(1, 7), 200); - Engine.SetProgress(20); + yield 20; g_Map.log("Creating bumps"); createAreas( @@ -266,7 +267,7 @@ avoidClasses(clPlayer, 3, clRiver, 20, clDunes, 10, clKushiteVillages, 10), scaleByMapSize(1, 3) * numPlayers * 3); - Engine.SetProgress(25); + yield 25; const [forestTrees, stragglerTrees] = getTreeCounts(400, 2000, 0.7); createForests( @@ -274,7 +275,7 @@ avoidClasses(clPlayer, 20, clForest, 20, clDunes, 2, clRiver, 20, clKushiteVillages, 10), clForest, forestTrees); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating dirt patches"); for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)]) @@ -291,7 +292,7 @@ new TerrainPainter(tFarmland), avoidClasses(clDunes, 3, clForest, 3, clPlayer, 5, clKushiteVillages, 5, clRiver, 10), scaleByMapSize(1, 10)); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating stone mines"); createObjectGroups( @@ -362,7 +363,7 @@ clForest, 4), scaleByMapSize(2, 8), 50); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating gazelle"); createObjectGroups( @@ -424,7 +425,7 @@ [stayClasses(clRiver, 4), avoidClasses(clFood, 16, clCataract, 10)], scaleByMapSize(15, 80), 50); - Engine.SetProgress(80); + yield 80; createStragglerTrees( [oBaobab, oAcacia], @@ -460,7 +461,7 @@ clForest, stragglerTrees * 10); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating reeds on the shore"); createObjectGroups( @@ -506,7 +507,7 @@ avoidClasses(clForest, 0, clPlayer, 0, clDunes, 0, clRiver, 15, clMetal, 4, clRock, 4), scaleByMapSize(50, 500), 50); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating rain drops"); if (aRain) @@ -515,7 +516,7 @@ 0, avoidClasses(clRain, 5), scaleByMapSize(60, 200)); - Engine.SetProgress(98); + yield 98; placePlayersNomad(clPlayer, avoidClasses( @@ -542,5 +543,5 @@ setPPSaturation(0.42); setPPBloom(0.6); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/flood.js =================================================================== --- binaries/data/mods/public/maps/random/flood.js +++ binaries/data/mods/public/maps/random/flood.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -120,7 +121,7 @@ "template": aGrassShort } }); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating central island"); createArea( @@ -231,7 +232,7 @@ ], clForest, stragglerTreesMainIsland); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating dirt patches"); const numb = currentBiome() == "generic/savanna" ? 3 : 1; @@ -275,7 +276,7 @@ ], clFood); - Engine.SetProgress(75); + yield 75; createFood( [ @@ -288,7 +289,7 @@ ], clFood); - Engine.SetProgress(85); + yield 85; const planetm = currentBiome() == "generic/india" ? 8 : 1; createDecoration( @@ -331,5 +332,5 @@ setSkySet(pickRandom(["cloudless", "cumulus", "overcast"])); setWaterMurkiness(0.4); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/fortress.js =================================================================== --- binaries/data/mods/public/maps/random/fortress.js +++ binaries/data/mods/public/maps/random/fortress.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tGrass = ["temperate_grass_04", "temperate_grass_03", "temperate_grass_04"]; const tForestFloor = "temperate_forestfloor_01"; @@ -140,7 +141,7 @@ avoidClasses(clPlayer, 7, clWater, 20), numLakes); - Engine.SetProgress(15); + yield 15; g_Map.log("Creating reeds"); createObjectGroupsByAreasDeprecated( @@ -151,7 +152,7 @@ numLakes, 100, waterAreas); - Engine.SetProgress(25); + yield 25; g_Map.log("Creating fish"); createObjectGroupsByAreasDeprecated( @@ -164,14 +165,14 @@ numLakes / 4, 50, waterAreas); - Engine.SetProgress(30); + yield 30; createBumps(avoidClasses(clWater, 2, clPlayer, 5)); - Engine.SetProgress(35); + yield 35; createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 5, clWater, 5, clHill, 15), clHill, scaleByMapSize(1, 4) * numPlayers); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating forests"); const [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7); @@ -191,7 +192,7 @@ ], avoidClasses(clPlayer, 5, clWater, 3, clForest, 15, clHill, 1), num); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -201,7 +202,7 @@ avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 1), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating grass patches"); createPatches( @@ -210,7 +211,7 @@ avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 1), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating stone mines"); createMines( @@ -223,7 +224,7 @@ ], avoidClasses(clWater, 0, clForest, 1, clPlayer, 5, clRock, 10, clHill, 1), clRock); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating metal mines"); createBalancedMetalMines( @@ -232,7 +233,7 @@ clMetal, avoidClasses(clWater, 0, clForest, 1, clPlayer, 5, clMetal, 10, clRock, 5, clHill, 1) ); - Engine.SetProgress(70); + yield 70; createDecoration( [ @@ -250,7 +251,7 @@ scaleByMapAreaAbsolute(13) ], avoidClasses(clWater, 0, clForest, 0, clPlayer, 1, clHill, 0)); - Engine.SetProgress(80); + yield 80; createFood( [ @@ -263,7 +264,7 @@ ], avoidClasses(clWater, 0, clForest, 0, clPlayer, 6, clHill, 1, clFood, 20), clFood); - Engine.SetProgress(85); + yield 85; createFood( [ @@ -275,14 +276,14 @@ avoidClasses(clWater, 2, clForest, 0, clPlayer, 6, clHill, 1, clFood, 10), clFood); - Engine.SetProgress(90); + yield 90; createStragglerTrees( [oOak, oBeech, oPine], avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 1, clMetal, 6, clRock, 6), clForest, stragglerTrees); - Engine.SetProgress(95); + yield 95; placePlayersNomad(clPlayer, avoidClasses(clWater, 2, clHill, 2, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2)); @@ -302,5 +303,5 @@ setPPBloom(0.38); setPPEffect("hdr"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/frontier.js =================================================================== --- binaries/data/mods/public/maps/random/frontier.js +++ binaries/data/mods/public/maps/random/frontier.js @@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap(mapSettings) { setSelectedBiome(); @@ -18,12 +19,12 @@ new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.land)); - Engine.SetProgress(20); + yield 20; if (!isNomad()) { // Note: `|| pickRandom(...)` is needed for atlas. - const pattern = g_MapSettings.TeamPlacement || + const pattern = mapSettings.TeamPlacement || pickRandom(["line", "radial", "randomGroup", "stronghold"]); createBases( ...playerPlacementByPattern( @@ -34,7 +35,7 @@ undefined), g_PlayerbaseTypes[pattern].walls); } - Engine.SetProgress(40); + yield 40; const features = [ { @@ -135,7 +136,7 @@ }); addElements(shuffleArray(features)); - Engine.SetProgress(50); + yield 50; addElements([ { @@ -168,7 +169,7 @@ "amounts": ["normal"] } ]); - Engine.SetProgress(60); + yield 60; addElements(shuffleArray([ { @@ -223,7 +224,7 @@ "amounts": ["few", "normal", "many", "tons"] } ])); - Engine.SetProgress(70); + yield 70; addElements(shuffleArray([ { @@ -278,7 +279,7 @@ "amounts": g_AllAmounts } ])); - Engine.SetProgress(90); + yield 90; placePlayersNomad( g_TileClasses.player, @@ -292,5 +293,5 @@ g_TileClasses.plateau, 4, g_TileClasses.animals, 2)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/gear.js =================================================================== --- binaries/data/mods/public/maps/random/gear.js +++ binaries/data/mods/public/maps/random/gear.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { TILE_CENTERED_HEIGHT_MAP = true; @@ -229,7 +230,7 @@ clForest, forestTrees); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -247,7 +248,7 @@ avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating stone mines"); createMines( @@ -278,7 +279,7 @@ scaleByMapSize(400, 2000), 100); - Engine.SetProgress(65); + yield 65; let planetm = 1; @@ -302,7 +303,7 @@ ], avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0)); - Engine.SetProgress(70); + yield 70; createFood( [ @@ -335,5 +336,5 @@ placePlayersNomad(clPlayer, avoidClasses(clWater, 4, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/guadalquivir_river.js =================================================================== --- binaries/data/mods/public/maps/random/guadalquivir_river.js +++ binaries/data/mods/public/maps/random/guadalquivir_river.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tGrass = ["medit_grass_field_a", "medit_grass_field_b"]; const tForestFloorC = "medit_plants_dirt"; @@ -117,7 +118,7 @@ "template": aGrassShort } }); - Engine.SetProgress(20); + yield 20; paintRiver({ "parallel": true, @@ -158,7 +159,7 @@ clForest, forestTrees); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -176,7 +177,7 @@ [avoidClasses(clForest, 0, clDirt, 3, clPlayer, 8, clRiver, 1), stayClasses(clLand, 7)], scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating stone mines"); createMines( @@ -201,7 +202,7 @@ ], clMetal ); - Engine.SetProgress(65); + yield 65; createDecoration( [ @@ -232,7 +233,7 @@ ], stayClasses(clShallow, 0)); - Engine.SetProgress(70); + yield 70; createFood( [ @@ -266,7 +267,7 @@ avoidClasses(clLand, 2, clRiver, 1), clFood); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oPoplar, oCarob, oApple], @@ -298,5 +299,5 @@ setPPSaturation(0.51); setPPBloom(0.12); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/gulf_of_bothnia.js =================================================================== --- binaries/data/mods/public/maps/random/gulf_of_bothnia.js +++ binaries/data/mods/public/maps/random/gulf_of_bothnia.js @@ -2,10 +2,11 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap(mapSettings) { TILE_CENTERED_HEIGHT_MAP = true; - if (g_MapSettings.Biome) + if (mapSettings.Biome) setSelectedBiome(); else // TODO: Replace ugly default for atlas by a dropdown @@ -113,7 +114,7 @@ "template": aRockMedium } }); - Engine.SetProgress(20); + yield 20; g_Map.log("Creating the gulf"); const gulfLakePositions = [ @@ -196,7 +197,7 @@ clForest, forestTrees); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -214,7 +215,7 @@ avoidClasses(clLake, 6, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating metal mines"); createBalancedMetalMines( @@ -233,7 +234,7 @@ avoidClasses(clLake, 2, clForest, 0, clPlayer, scaleByMapSize(15, 25), clHill, 1, clMetal, 10), 0.9 ); - Engine.SetProgress(70); + yield 70; createDecoration( [ @@ -251,7 +252,7 @@ scaleByMapSize(bushCount.min, bushCount.max) ], avoidClasses(clLake, 0, clForest, 0, clPlayer, 5, clHill, 0, clBaseResource, 5)); - Engine.SetProgress(75); + yield 75; createFood( [ @@ -284,7 +285,7 @@ clFood); } - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oTree3], @@ -296,5 +297,5 @@ placePlayersNomad(clPlayer, avoidClasses(clLake, 4, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/harbor.js =================================================================== --- binaries/data/mods/public/maps/random/harbor.js +++ binaries/data/mods/public/maps/random/harbor.js @@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -20,7 +21,7 @@ new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.land)); - Engine.SetProgress(10); + yield 10; const mapSize = g_Map.getSize(); const mapCenter = g_Map.getCenter(); @@ -35,19 +36,19 @@ startAngle, undefined), true); - Engine.SetProgress(20); + yield 20; addCenterLake(); - Engine.SetProgress(30); + yield 30; if (mapSize >= 192) { addHarbors(); - Engine.SetProgress(40); + yield 40; } addSpines(); - Engine.SetProgress(50); + yield 50; addElements([ { @@ -130,7 +131,7 @@ "amounts": g_AllAmounts } ])); - Engine.SetProgress(60); + yield 60; addElements(shuffleArray([ { @@ -189,7 +190,7 @@ } ])); - Engine.SetProgress(70); + yield 70; addElements(shuffleArray([ { @@ -248,7 +249,7 @@ } ])); - Engine.SetProgress(80); + yield 80; addElements([ { @@ -284,7 +285,7 @@ } ]); - Engine.SetProgress(90); + yield 90; placePlayersNomad( g_TileClasses.player, @@ -299,7 +300,7 @@ g_TileClasses.mountain, 4, g_TileClasses.animals, 2)); - g_Map.ExportMap(); + return g_Map; function addCenterLake() { Index: binaries/data/mods/public/maps/random/hellas.js =================================================================== --- binaries/data/mods/public/maps/random/hellas.js +++ binaries/data/mods/public/maps/random/hellas.js @@ -18,6 +18,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap(mapSettings) { TILE_CENTERED_HEIGHT_MAP = true; @@ -45,7 +46,7 @@ const heightmapHellas = convertHeightmap1Dto2D(Engine.LoadHeightmapImage("maps/random/hellas.png")); const biomes = Engine.ReadJSONFile("maps/random/hellas_biomes.json"); - const heightScale = num => num * g_MapSettings.Size / 320; + const heightScale = num => num * mapSettings.Size / 320; const heightSeaGround = heightScale(-6); const heightReedsMin = heightScale(-2); @@ -145,7 +146,7 @@ createArea( new DiskPlacer(fractionToTiles(0.5) - MAP_BORDER_WIDTH, mapCenter), new SmoothingPainter(1, 0.5, 1)); - Engine.SetProgress(25); + yield 25; clCliffs = g_Map.createTileClass(); @@ -188,7 +189,7 @@ g_Map.log("Too few player locations, starting over"); } - Engine.SetProgress(35); + yield 35; if (!isNomad()) { @@ -199,7 +200,7 @@ new ClumpPlacer(diskArea(playerRadius), 0.95, 0.6, Infinity, position), new SmoothElevationPainter(ELEVATION_SET, g_Map.getHeight(position), playerRadius / 2)); - Engine.SetProgress(38); + yield 38; } g_Map.log("Painting lowlands"); @@ -207,14 +208,14 @@ new MapBoundsPlacer(), new TerrainPainter(biomes.lowlands.terrains.main), constraintLowlands); - Engine.SetProgress(40); + yield 40; g_Map.log("Painting highlands"); createArea( new MapBoundsPlacer(), new TerrainPainter(biomes.highlands.terrains.main), constraintHighlands); - Engine.SetProgress(45); + yield 45; g_Map.log("Painting mountains"); createArea( @@ -224,14 +225,14 @@ avoidClasses(clWater, 2), constraintMountains ]); - Engine.SetProgress(48); + yield 48; g_Map.log("Painting water and shoreline"); createArea( new MapBoundsPlacer(), new TerrainPainter(biomes.water.terrains.main), new HeightConstraint(-Infinity, heightShoreline)); - Engine.SetProgress(50); + yield 50; g_Map.log("Painting cliffs"); createArea( @@ -241,7 +242,7 @@ avoidClasses(clWater, 2), new SlopeConstraint(2, Infinity) ]); - Engine.SetProgress(55); + yield 55; for (let i = 0; i < numPlayers; ++i) { @@ -287,7 +288,7 @@ // No decoratives }); } - Engine.SetProgress(60); + yield 60; g_Map.log("Placing docks"); placeDocks( @@ -301,7 +302,7 @@ [avoidClasses(clDock, 50), new StaticConstraint(avoidClasses(clPlayer, 30, clCliffs, 8))], 0, 50); - Engine.SetProgress(65); + yield 65; const [forestTrees, stragglerTrees] = getTreeCounts(600, 4000, 0.7); const biomeTreeRatioHighlands = 0.4; @@ -321,7 +322,7 @@ clForest, forestTrees * (biome == "highlands" ? biomeTreeRatioHighlands : 1 - biomeTreeRatioHighlands)); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating stone mines"); const minesStone = [ @@ -335,7 +336,7 @@ [avoidClasses(clForest, 1, clPlayer, 20, clRock, 18, clCliffs, 2, clWater, 2, clDock, 6)], scaleByMapSize(2, 12), 50); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating metal mines"); const minesMetal = [ @@ -356,7 +357,7 @@ clDock, 6)], scaleByMapSize(2, 12), 50); - Engine.SetProgress(80); + yield 80; for (const biome of ["lowlands", "highlands"]) createStragglerTrees( @@ -376,7 +377,7 @@ clForest, stragglerTrees * (biome == "highlands" ? biomeTreeRatioHighlands * 4 : 1 - biomeTreeRatioHighlands)); - Engine.SetProgress(85); + yield 85; createFood( [ @@ -402,7 +403,7 @@ constraintHighlands ], clFood); - Engine.SetProgress(90); + yield 90; createFood( [ @@ -428,7 +429,7 @@ constraintLowlands ], clFood); - Engine.SetProgress(93); + yield 93; createFood( [ @@ -461,7 +462,7 @@ [stayClasses(clWater, 8), avoidClasses(clFood, 8, clDock, 6)], scaleByMapSize(15, 50), 100); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating grass patches"); for (const biome of ["lowlands", "highlands"]) @@ -475,7 +476,7 @@ ], scaleByMapSize(15, 45) / biomes[biome].terrains.patches.length, clDirt); - Engine.SetProgress(96); + yield 96; for (const biome of ["lowlands", "highlands"]) { @@ -515,7 +516,7 @@ avoidClasses(clWater, 4, clPlayer, 15, clForest, 1, clRock, 4, clMetal, 4), ]); } - Engine.SetProgress(98); + yield 98; g_Map.log("Creating temple"); createObjectGroups( @@ -611,7 +612,7 @@ placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clFood, 2, clCliffs, 2, clWater, 15)); - Engine.SetProgress(99); + yield 99; setSkySet("sunny"); setSunColor(0.988166, 0.929297, 0.693819); @@ -628,5 +629,5 @@ setPPContrast(0.62); setPPBloom(0.12); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/hells_pass.js =================================================================== --- binaries/data/mods/public/maps/random/hells_pass.js +++ binaries/data/mods/public/maps/random/hells_pass.js @@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -19,7 +20,7 @@ new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.land)); - Engine.SetProgress(10); + yield 10; const teamsArray = getTeamsArray(); const startAngle = randomAngle(); @@ -31,10 +32,10 @@ startAngle, undefined), false); - Engine.SetProgress(20); + yield 20; placeBarriers(); - Engine.SetProgress(40); + yield 40; addElements(shuffleArray([ { @@ -87,7 +88,7 @@ "amounts": ["few"] } ])); - Engine.SetProgress(50); + yield 50; addElements([ { @@ -122,7 +123,7 @@ "amounts": ["normal"] } ]); - Engine.SetProgress(60); + yield 60; addElements(shuffleArray([ { @@ -180,7 +181,7 @@ "amounts": ["few", "normal", "many", "tons"] } ])); - Engine.SetProgress(80); + yield 80; addElements(shuffleArray([ { @@ -238,7 +239,7 @@ "amounts": g_AllAmounts } ])); - Engine.SetProgress(90); + yield 90; placePlayersNomad( g_TileClasses.player, @@ -253,7 +254,7 @@ g_TileClasses.mountain, 4, g_TileClasses.animals, 2)); - g_Map.ExportMap(); + return g_Map; function placeBarriers() { Index: binaries/data/mods/public/maps/random/hyrcanian_shores.js =================================================================== --- binaries/data/mods/public/maps/random/hyrcanian_shores.js +++ binaries/data/mods/public/maps/random/hyrcanian_shores.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -102,7 +103,7 @@ "template": aGrassShort } }); - Engine.SetProgress(10); + yield 10; paintRiver({ "parallel": true, @@ -123,7 +124,7 @@ createTerrain(height < heightShore1 ? tWater : tShore).place(position); } }); - Engine.SetProgress(20); + yield 20; g_Map.log("Marking highlands area"); createArea( @@ -145,7 +146,7 @@ [stayClasses(clWater, 2), avoidClasses(clFood, 3)], numPlayers, 50); - Engine.SetProgress(25); + yield 25; g_Map.log("Creating bumps"); createAreas( @@ -154,7 +155,7 @@ stayClasses(clHighlands, 1), scaleByMapSize(300, 600)); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating hills"); createAreas( @@ -167,7 +168,7 @@ avoidClasses(clPlayer, 20, clWater, 5, clHill, 15, clHighlands, 5), scaleByMapSize(1, 4) * numPlayers); - Engine.SetProgress(35); + yield 35; g_Map.log("Creating mainland forests"); const [forestTrees, stragglerTrees] = getTreeCounts(1000, 3500, 0.85); @@ -193,7 +194,7 @@ clBaseResource, 3, clHighlands, 2), numberOfForests); - Engine.SetProgress(45); + yield 45; } g_Map.log("Creating highland forests"); @@ -223,7 +224,7 @@ 30); } - Engine.SetProgress(70); + yield 70; g_Map.log("Creating dirt patches"); for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)]) @@ -236,7 +237,7 @@ ], avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 4), scaleByMapSize(15, 45)); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating grass patches"); for (const size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)]) @@ -252,7 +253,7 @@ clBaseResource, 6), scaleByMapSize(15, 45)); - Engine.SetProgress(80); + yield 80; g_Map.log("Creating stone mines"); let group = new SimpleGroup( @@ -279,7 +280,7 @@ scaleByMapSize(5, 20), 100 ); - Engine.SetProgress(85); + yield 85; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup( @@ -291,7 +292,7 @@ avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0), scaleByMapSize(16, 262), 50 ); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating large decorative rocks"); group = new SimpleGroup( @@ -370,7 +371,7 @@ avoidClasses(clWater, 3, clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0), scaleByMapSize(13, 200) ); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating bushes"); group = new SimpleGroup( @@ -387,5 +388,5 @@ setWaterWaviness(2.0); setWaterType("ocean"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/india.js =================================================================== --- binaries/data/mods/public/maps/random/india.js +++ binaries/data/mods/public/maps/random/india.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tGrass1 = "savanna_grass_a"; const tDirt1 = "savanna_dirt_a"; @@ -75,7 +76,7 @@ } // No decoratives }); - Engine.SetProgress(20); + yield 20; g_Map.log("Creating bumps"); createAreas( @@ -116,7 +117,7 @@ paintTerrainBasedOnHeight(1, 2.4, 0, tShore); paintTerrainBasedOnHeight(-8, 1, 2, tWater); paintTileClassBasedOnHeight(-6, 0, 1, clWater); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating stone mines"); for (let i = 0; i < scaleByMapSize(12, 30); ++i) @@ -137,7 +138,7 @@ avoidClasses(clPlayer, 20, clMetal, 10, clRock, 8, clWater, 4), scaleByMapSize(2, 12), 100 ); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating small decorative rocks"); createObjectGroupsDeprecated( @@ -149,7 +150,7 @@ avoidClasses(clPlayer, 7, clWater, 1), scaleByMapSize(200, 1200), 1 ); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating boar"); createObjectGroupsDeprecated( @@ -228,7 +229,7 @@ avoidClasses(clWater, 3, clPlayer, 20, clFood, 12, clRock, 4, clMetal, 4), randIntInclusive(1, 4) * numPlayers + 2, 50 ); - Engine.SetProgress(85); + yield 85; g_Map.log("Creating trees"); createObjectGroupsDeprecated( @@ -270,5 +271,5 @@ setPPContrast(0.57031); setPPBloom(0.34); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/island_stronghold.js =================================================================== --- binaries/data/mods/public/maps/random/island_stronghold.js +++ binaries/data/mods/public/maps/random/island_stronghold.js @@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { const g_InitialMineDistance = 14; const g_InitialTrees = 50; @@ -207,7 +208,7 @@ } } - Engine.SetProgress(40); + yield 40; g_Map.log("Creating big islands"); createAreas( @@ -245,7 +246,7 @@ scaleByMapSize(6, 55), 1); - Engine.SetProgress(70); + yield 70; g_Map.log("Smoothing heightmap"); createArea( @@ -256,7 +257,7 @@ unPaintTileClassBasedOnHeight(-10, 10, 3, clLand); paintTileClassBasedOnHeight(0, 5, 3, clLand); - Engine.SetProgress(85); + yield 85; createBumps(avoidClasses(clPlayer, 20)); @@ -451,7 +452,7 @@ planetm * scaleByMapSize(13, 200) ); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating large grass tufts"); group = new SimpleGroup( @@ -478,7 +479,7 @@ setSunElevation(randFloat(1/5, 1/3) * Math.PI); setWaterWaviness(2); - Engine.SetProgress(100); + yield 100; - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/islands.js =================================================================== --- binaries/data/mods/public/maps/random/islands.js +++ binaries/data/mods/public/maps/random/islands.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { TILE_CENTERED_HEIGHT_MAP = true; @@ -212,7 +213,7 @@ num); } - Engine.SetProgress(50); + yield 50; g_Map.log("Creating dirt patches"); const numberOfPatches = scaleByMapSize(15, 45) * (currentBiome() == "generic/savanna" ? 3 : 1); for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)]) @@ -238,7 +239,7 @@ [avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 0), stayClasses(clLand, 6)], numberOfPatches); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating stone mines"); let group = new SimpleGroup( @@ -268,7 +269,7 @@ scaleByMapSize(4, 16), 100 ); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup( @@ -292,7 +293,7 @@ scaleByMapSize(8, 131), 50 ); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating deer"); group = new SimpleGroup( @@ -304,7 +305,7 @@ 3 * numPlayers, 50 ); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating sheep"); group = new SimpleGroup( @@ -336,7 +337,7 @@ 25 * numPlayers, 60 ); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oTree1, oTree2, oTree4, oTree3], @@ -360,7 +361,7 @@ planetm * scaleByMapSize(13, 200) ); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating large grass tufts"); group = new SimpleGroup( @@ -374,7 +375,7 @@ planetm * scaleByMapSize(13, 200) ); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating bushes"); group = new SimpleGroup( @@ -396,5 +397,5 @@ setSunElevation(randFloat(1/5, 1/3) * Math.PI); setWaterWaviness(2); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/jebel_barkal.js =================================================================== --- binaries/data/mods/public/maps/random/jebel_barkal.js +++ binaries/data/mods/public/maps/random/jebel_barkal.js @@ -7,6 +7,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("heightmap"); +function* GenerateMap(mapSettings) { TILE_CENTERED_HEIGHT_MAP = true; @@ -72,7 +73,7 @@ const oPyramidSmall = "structures/kush/pyramid_small"; const oWonderPtol = "structures/ptol/wonder"; const oFortress = "structures/kush/fortress"; - const oTower = g_MapSettings.Size >= 256 && getDifficulty() >= 3 ? "structures/kush/defense_tower" : + const oTower = mapSettings.Size >= 256 && getDifficulty() >= 3 ? "structures/kush/defense_tower" : "structures/kush/sentry_tower"; const oHouse = "structures/kush/house"; const oMarket = "structures/kush/market"; @@ -144,7 +145,7 @@ ...oPalms.map(tree => tForestFloorFertile + TERRAIN_SEPARATOR + tree), tForestFloorFertile]; - const heightScale = num => num * g_MapSettings.Size / 320; + const heightScale = num => num * mapSettings.Size / 320; const minHeightSource = 3; const maxHeightSource = 800; @@ -343,7 +344,7 @@ "overlap": 0.05 }; - Engine.SetProgress(10); + yield 10; g_Map.log("Loading hill heightmap"); createArea( @@ -420,7 +421,7 @@ "meanderShort": 40, "meanderLong": 0 }); - Engine.SetProgress(30); + yield 30; g_Map.log("Computing player locations"); const playerIDs = sortAllPlayers(); @@ -562,7 +563,7 @@ previousPassageY = y; areasPassages.push(area); } - Engine.SetProgress(40); + yield 40; g_Map.log("Marking hill"); createArea( @@ -597,7 +598,7 @@ new SlopeConstraint(-Infinity, 2) ]); - Engine.SetProgress(50); + yield 50; for (let i = 0; i < numPlayers; ++i) { @@ -679,7 +680,7 @@ 50, [areaPyramids]); - Engine.SetProgress(60); + yield 60; // The city is a circle segment of this maximum size g_Map.log("Computing city grid"); @@ -740,7 +741,7 @@ 8, 0, 0, Infinity), new TileClassPainter(clPath))); } - Engine.SetProgress(70); + yield 70; g_Map.log("Placing kushite temples"); const entitiesTemples = []; @@ -1007,7 +1008,7 @@ new NearTileClassConstraint(clPath, pathWidth + 1) ]); } - Engine.SetProgress(70); + yield 70; g_Map.log("Finding road starting points"); const roadStartLocations = shuffleArray( @@ -1098,7 +1099,7 @@ 20, [areaRoadPalms]); } - Engine.SetProgress(75); + yield 75; g_Map.log("Marking city bush area"); const areaCityBushes = @@ -1194,7 +1195,7 @@ 4, 0, 3); - Engine.SetProgress(80); + yield 80; g_Map.log("Setting up common constraints and areas"); const nearWater = new NearTileClassConstraint(clWater, 3); @@ -1389,7 +1390,7 @@ 50, [areaFertileLand]); - Engine.SetProgress(85); + yield 85; g_Map.log("Marking irrigation canal tree area"); const areaIrrigationCanalTrees = createArea( @@ -1535,7 +1536,7 @@ scaleByMapSize(20, 120), 50); - Engine.SetProgress(95); + yield 95; avoidCollisions = new StaticConstraint(avoidCollisions); @@ -1611,5 +1612,5 @@ setPPSaturation(0.42); setPPBloom(0.23); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/kerala.js =================================================================== --- binaries/data/mods/public/maps/random/kerala.js +++ binaries/data/mods/public/maps/random/kerala.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tGrass = [ "tropic_grass_c", @@ -101,7 +102,7 @@ } // No decoratives }); - Engine.SetProgress(15); + yield 15; paintRiver({ "parallel": true, @@ -153,7 +154,7 @@ paintTerrainBasedOnHeight(0, 1, 1, tShore); paintTileClassBasedOnHeight(-6, 0.5, 1, clWater); - Engine.SetProgress(45); + yield 45; g_Map.log("Creating hills"); createAreasInAreas( @@ -190,7 +191,7 @@ avoidClasses(clPlayer, 20, clForest, 10, clHill, 0, clWater, 8), num); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating grass patches"); for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)]) @@ -269,7 +270,7 @@ 8 * scaleByMapSize(13, 200) ); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating large grass tufts"); group = new SimpleGroup( @@ -283,7 +284,7 @@ 8 * scaleByMapSize(13, 200) ); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating bushes"); group = new SimpleGroup( @@ -294,7 +295,7 @@ 8 * scaleByMapSize(13, 200), 50 ); - Engine.SetProgress(96); + yield 96; createStragglerTrees( [oTree, oPalm], @@ -312,7 +313,7 @@ 3 * numPlayers, 50 ); - Engine.SetProgress(97); + yield 97; g_Map.log("Creating berry bush"); group = new SimpleGroup( @@ -365,5 +366,5 @@ setPPBloom(0.6); setSkySet("cirrus"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/lake.js =================================================================== --- binaries/data/mods/public/maps/random/lake.js +++ binaries/data/mods/public/maps/random/lake.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -135,7 +136,7 @@ "template": aGrassShort } }); - Engine.SetProgress(20); + yield 20; createBumps(avoidClasses(clWater, 2, clPlayer, 20)); @@ -157,7 +158,7 @@ clForest, forestTrees); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -175,7 +176,7 @@ avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating metal mines"); createBalancedMetalMines( @@ -193,7 +194,7 @@ avoidClasses(clWater, 3, clForest, 1, clPlayer, scaleByMapSize(20, 35), clHill, 1, clMetal, 10) ); - Engine.SetProgress(65); + yield 65; let planetm = 1; @@ -217,7 +218,7 @@ ], avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0)); - Engine.SetProgress(70); + yield 70; createFood( [ @@ -251,7 +252,7 @@ [avoidClasses(clFood, 20), stayClasses(clWater, 6)], clFood); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oTree1, oTree2, oTree4, oTree3], @@ -265,5 +266,5 @@ setWaterWaviness(4.0); setWaterType("lake"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/latium.js =================================================================== --- binaries/data/mods/public/maps/random/latium.js +++ binaries/data/mods/public/maps/random/latium.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tOceanDepths = "medit_sea_depths"; const tOceanRockDeep = "medit_sea_coral_deep"; @@ -125,7 +126,7 @@ clWater.add(position); } }); - Engine.SetProgress(10); + yield 10; g_Map.log("Painting elevation"); const noise0 = new Noise2D(scaleByMapSize(4, 16)); @@ -194,7 +195,7 @@ } g_Map.setHeight(position, h); } - Engine.SetProgress(20); + yield 20; g_Map.log("Painting terrain"); const noise6 = new Noise2D(scaleByMapSize(10, 40)); @@ -333,7 +334,7 @@ createTerrain(t).place(position); } - Engine.SetProgress(30); + yield 30; placePlayerBases({ "PlayerPlacement": [primeSortAllPlayers(), playerPosition], @@ -369,7 +370,7 @@ } // No decoratives }); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating bushes"); let group = new SimpleGroup( @@ -384,7 +385,7 @@ avoidClasses(clWater, 4, clCliff, 2), scaleByMapSize(9, 146), 50 ); - Engine.SetProgress(45); + yield 45; g_Map.log("Creating rocks"); group = new SimpleGroup( @@ -398,7 +399,7 @@ avoidClasses(clWater, 2, clCliff, 1), scaleByMapSize(9, 146), 50 ); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating large stone mines"); group = new SimpleGroup( @@ -423,7 +424,7 @@ avoidClasses(clForest, 4, clWater, 1, clPlayer, 40, clMetal, 50, clCliff, 3), scaleByMapSize(4, 16), 100 ); - Engine.SetProgress(60); + yield 60; createStragglerTrees( [oCarob, oBeech, oLombardyPoplar, oLombardyPoplar, oPine], @@ -431,7 +432,7 @@ clForest, scaleByMapSize(10, 190)); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating straggler cypresses"); group = new SimpleGroup( @@ -442,7 +443,7 @@ avoidClasses(clWater, 5, clCliff, 4, clForest, 2, clPlayer, 15, clMetal, 6, clRock, 6), scaleByMapSize(5, 75), 50 ); - Engine.SetProgress(80); + yield 80; g_Map.log("Creating sheep"); group = new SimpleGroup([new SimpleObject(oSheep, 2, 4, 0, 2)], true, clFood); @@ -457,7 +458,7 @@ clFood, 8), 3 * numPlayers, 50 ); - Engine.SetProgress(85); + yield 85; g_Map.log("Creating fish"); createObjectGroups( @@ -470,7 +471,7 @@ ], scaleByMapSize(8, 32)); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating deer"); group = new SimpleGroup( @@ -488,7 +489,7 @@ clFood, 8), 3 * numPlayers, 50 ); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating berry bushes"); group = new SimpleGroup([new SimpleObject(oBerryBush, 5, 7, 0, 3)], true, clFood); @@ -514,5 +515,5 @@ setWaterType("ocean"); setWaterMurkiness(0.8); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/lions_den.js =================================================================== --- binaries/data/mods/public/maps/random/lions_den.js +++ binaries/data/mods/public/maps/random/lions_den.js @@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -24,7 +25,7 @@ new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.land)); - Engine.SetProgress(10); + yield 10; createBases( ...playerPlacementByPattern( @@ -34,10 +35,10 @@ startAngle, undefined), true); - Engine.SetProgress(20); + yield 20; createSunkenTerrain(); - Engine.SetProgress(30); + yield 30; addElements([ { @@ -133,7 +134,7 @@ "amounts": ["scarce"] } ]); - Engine.SetProgress(40); + yield 40; addElements(shuffleArray([ { @@ -233,7 +234,7 @@ "amounts": ["tons"] } ])); - Engine.SetProgress(60); + yield 60; addElements(shuffleArray([ { @@ -348,7 +349,7 @@ "amounts": ["tons"] } ])); - Engine.SetProgress(75); + yield 75; addElements([ { @@ -366,7 +367,7 @@ "amounts": ["tons"] } ]); - Engine.SetProgress(80); + yield 80; addElements([ { @@ -384,7 +385,7 @@ "amounts": ["scarce"] } ]); - Engine.SetProgress(85); + yield 85; addElements([ { @@ -401,7 +402,7 @@ "amounts": ["tons"] } ]); - Engine.SetProgress(90); + yield 90; addElements([ { @@ -418,7 +419,7 @@ "amounts": ["scarce"] } ]); - Engine.SetProgress(95); + yield 95; placePlayersNomad( g_TileClasses.player, @@ -431,7 +432,7 @@ g_TileClasses.animals, 2) ]); - g_Map.ExportMap(); + return g_Map; function createSunkenTerrain() { Index: binaries/data/mods/public/maps/random/lorraine_plain.js =================================================================== --- binaries/data/mods/public/maps/random/lorraine_plain.js +++ binaries/data/mods/public/maps/random/lorraine_plain.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tPrimary = "temp_grass_long"; const tGrass = ["temp_grass", "temp_grass", "temp_grass_d"]; @@ -103,7 +104,7 @@ "template": aGrassShort } }); - Engine.SetProgress(20); + yield 20; const riverPositions = [ new Vector2D(mapBounds.left + 1, mapCenter.y), @@ -116,7 +117,7 @@ scaleByMapSize(0.5, 2), 0.1, 0.01), new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 4), avoidClasses(clPlayer, 4)); - Engine.SetProgress(25); + yield 25; g_Map.log("Creating small puddles at the map border to ensure players being separated"); for (const riverPosition of riverPositions) @@ -124,7 +125,7 @@ new ClumpPlacer(diskArea(scaleByMapSize(5, 10)), 0.95, 0.6, Infinity, riverPosition), new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 2), avoidClasses(clPlayer, 8)); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating the shallows of the main river"); for (let i = 0; i <= randIntInclusive(3, scaleByMapSize(4, 6)); ++i) @@ -142,7 +143,7 @@ "tileClass": clShallow }); } - Engine.SetProgress(35); + yield 35; createTributaryRivers( startAngle, @@ -155,13 +156,13 @@ clShallow, avoidClasses(clPlayer, 3, clBaseResource, 4)); - Engine.SetProgress(40); + yield 40; paintTerrainBasedOnHeight(-5, 1, 1, tWater); paintTerrainBasedOnHeight(1, 2, 1, pForestR); paintTileClassBasedOnHeight(-6, 0.5, 1, clWater); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating bumps"); createAreas( @@ -170,7 +171,7 @@ avoidClasses(clWater, 2, clPlayer, 15), scaleByMapSize(100, 200) ); - Engine.SetProgress(55); + yield 55; const [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7); createForests( @@ -178,7 +179,7 @@ avoidClasses(clPlayer, 15, clWater, 3, clForest, 16, clHill, 1), clForest, forestTrees); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating dirt patches"); for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)]) @@ -200,7 +201,7 @@ avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 6), scaleByMapSize(15, 45) ); - Engine.SetProgress(80); + yield 80; g_Map.log("Creating stone mines"); let group = new SimpleGroup( @@ -227,7 +228,7 @@ scaleByMapSize(4, 16), 100 ); - Engine.SetProgress(86); + yield 86; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup( @@ -336,5 +337,5 @@ setWaterType("lake"); setWaterMurkiness(0.80); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/lower_nubia.js =================================================================== --- binaries/data/mods/public/maps/random/lower_nubia.js +++ binaries/data/mods/public/maps/random/lower_nubia.js @@ -32,6 +32,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap(mapSettings) { TILE_CENTERED_HEIGHT_MAP = true; @@ -79,7 +80,7 @@ "props/flora/grass_soft_dry_small_tall" ].map(actorTemplate); - const heightScale = num => num * g_MapSettings.Size / 320; + const heightScale = num => num * mapSettings.Size / 320; const heightSeaGround = heightScale(-3); const heightWaterLevel = heightScale(0); @@ -111,7 +112,7 @@ const heightmapWaterThreshold = convertHeightmap1Dto2D(Engine.LoadHeightmapImage( "maps/random/lower_nubia_water_threshold.png")); - Engine.SetProgress(3); + yield 3; g_Map.log("Composing heightmap"); const heightmapCombined = []; @@ -126,13 +127,13 @@ heightmapCombined[x][y] = heightmapLandThreshold[x][y] || heightmapWaterThreshold[x][y] ? heightmapLand[x][y] : minHeight; } - Engine.SetProgress(6); + yield 6; g_Map.log("Applying heightmap"); createArea( new MapBoundsPlacer(), new HeightmapPainter(heightmapCombined, minHeight, maxHeight)); - Engine.SetProgress(9); + yield 9; g_Map.log("Lowering sea ground"); createArea( @@ -142,7 +143,7 @@ new TileClassPainter(clWater) ], new HeightConstraint(-Infinity, heightSeaGround)); - Engine.SetProgress(15); + yield 15; g_Map.log("Creating Nile passages"); const riverAngle = Math.PI * 3 / 4; @@ -169,41 +170,41 @@ avoidClasses(clPassage, scaleByMapSize(15, 25)) ]); } - Engine.SetProgress(18); + yield 18; g_Map.log("Smoothing heightmap"); createArea( new MapBoundsPlacer(), new SmoothingPainter(1, scaleByMapSize(0.5, 1), 1)); - Engine.SetProgress(22); + yield 22; g_Map.log("Marking water"); createArea( new MapBoundsPlacer(), new TileClassPainter(clWater), new HeightConstraint(-Infinity, heightSeaGround)); - Engine.SetProgress(28); + yield 28; g_Map.log("Marking cliffs"); createArea( new MapBoundsPlacer(), new TileClassPainter(clCliff), new SlopeConstraint(2, Infinity)); - Engine.SetProgress(32); + yield 32; g_Map.log("Painting water and shoreline"); createArea( new MapBoundsPlacer(), new TerrainPainter(tWater), new HeightConstraint(-Infinity, heightWaterLevel)); - Engine.SetProgress(35); + yield 35; g_Map.log("Painting plateau"); createArea( new MapBoundsPlacer(), new TerrainPainter(tPlateau), new HeightConstraint(heightPlateau2, Infinity)); - Engine.SetProgress(38); + yield 38; let playerIDs = []; let playerPosition = []; @@ -220,7 +221,7 @@ position), new SmoothElevationPainter(ELEVATION_SET, g_Map.getHeight(position), 6)); } - Engine.SetProgress(43); + yield 43; placePlayerBases({ "PlayerPlacement": [playerIDs, playerPosition], @@ -268,7 +269,7 @@ "template": pickRandom(aBushes) } }); - Engine.SetProgress(50); + yield 50; g_Map.log("Painting lower cliffs"); createArea( @@ -278,7 +279,7 @@ new SlopeConstraint(2, Infinity), new NearTileClassConstraint(clWater, 2) ]); - Engine.SetProgress(55); + yield 55; g_Map.log("Painting upper cliffs"); createArea( @@ -288,7 +289,7 @@ avoidClasses(clWater, 2), new SlopeConstraint(2, Infinity) ]); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating stone mines"); createMines( @@ -302,7 +303,7 @@ avoidClasses(clWater, 4, clCliff, 4, clPlayer, 20, clRock, 10), clRock, scaleByMapSize(10, 30)); - Engine.SetProgress(63); + yield 63; g_Map.log("Creating metal mines"); createMines( @@ -316,7 +317,7 @@ avoidClasses(clWater, 4, clCliff, 4, clPlayer, 20, clMetal, 10, clRock, 5), clMetal, scaleByMapSize(10, 30)); - Engine.SetProgress(67); + yield 67; g_Map.log("Creating pyramid"); createObjectGroups( @@ -328,7 +329,7 @@ ], 1, 500); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating trees near the Nile"); createObjectGroups( @@ -349,7 +350,7 @@ ], scaleByMapSize(100, 1000), 200); - Engine.SetProgress(73); + yield 73; const avoidCollisions = avoidClasses( clPlayer, 12, @@ -374,7 +375,7 @@ [avoidCollisions, avoidClasses(clWater, 10, clForest, 4)], scaleByMapSize(10, 180), 10); - Engine.SetProgress(77); + yield 77; g_Map.log("Creating gazelles"); createObjectGroups( @@ -383,7 +384,7 @@ avoidCollisions, scaleByMapSize(2, 10), 50); - Engine.SetProgress(80); + yield 80; if (!isNomad()) { @@ -399,7 +400,7 @@ scaleByMapSize(2, 10), 50); } - Engine.SetProgress(83); + yield 83; g_Map.log("Creating elephants"); createObjectGroups( @@ -412,7 +413,7 @@ avoidCollisions, scaleByMapSize(2, 10), 50); - Engine.SetProgress(86); + yield 86; placePlayersNomad(clPlayer, avoidClasses( @@ -423,12 +424,12 @@ clFood, 2, clCliff, 2, clPyramid, 6)); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating hawk"); for (let i = 0; i < scaleByMapSize(0, 2); ++i) g_Map.placeEntityAnywhere(oHawk, 0, mapCenter, randomAngle()); - Engine.SetProgress(91); + yield 91; createDecoration( aBushes.map(bush => [new SimpleObject(bush, 0, 3, 2, 4)]), @@ -438,13 +439,13 @@ new HeightConstraint(heightWaterLevel, Infinity), avoidClasses(clForest, 0) ]); - Engine.SetProgress(92); + yield 92; createDecoration( [[new SimpleObject(aRock, 0, 4, 2, 4)]], [[scaleByMapSize(100, 600)]], avoidClasses(clWater, 0)); - Engine.SetProgress(95); + yield 95; setWindAngle(-0.43); setWaterTint(0.161, 0.286, 0.353); @@ -468,5 +469,5 @@ setPPSaturation(0.42); setPPBloom(0.23); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/mainland.js =================================================================== --- binaries/data/mods/public/maps/random/mainland.js +++ binaries/data/mods/public/maps/random/mainland.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -88,7 +89,7 @@ } // No decoratives }); - Engine.SetProgress(20); + yield 20; createBumps(avoidClasses(clPlayer, 20)); @@ -106,7 +107,7 @@ clForest, forestTrees); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -124,7 +125,7 @@ avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating metal mines"); createBalancedMetalMines( @@ -142,7 +143,7 @@ avoidClasses(clForest, 1, clPlayer, scaleByMapSize(20, 35), clHill, 1, clMetal, 10) ); - Engine.SetProgress(65); + yield 65; let planetm = 1; @@ -166,7 +167,7 @@ ], avoidClasses(clForest, 0, clPlayer, 10, clHill, 0)); - Engine.SetProgress(70); + yield 70; createFood( [ @@ -180,7 +181,7 @@ avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clMetal, 4, clRock, 4, clFood, 20), clFood); - Engine.SetProgress(75); + yield 75; createFood( [ @@ -192,7 +193,7 @@ avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clMetal, 4, clRock, 4, clFood, 10), clFood); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oTree1, oTree2, oTree4, oTree3], @@ -202,5 +203,5 @@ placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/marmara.js =================================================================== --- binaries/data/mods/public/maps/random/marmara.js +++ binaries/data/mods/public/maps/random/marmara.js @@ -20,6 +20,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap(mapSettings) { setBiome("generic/aegean"); @@ -55,7 +56,7 @@ g_Decoratives.bushSmall = "actor|props/flora/bush_medit_sm_dry.xml"; g_Decoratives.reeds = "actor|props/flora/reeds_pond_lush_a.xml"; - const heightScale = num => num * g_MapSettings.Size / 320; + const heightScale = num => num * mapSettings.Size / 320; const heightSeaGround = heightScale(scaleByMapSize(-6, -4)); const heightWaterLevel = heightScale(0); @@ -67,7 +68,7 @@ initTileClasses(["shoreline"]); g_Map.LoadHeightmapImage("marmara.png", 0, 10); - Engine.SetProgress(15); + yield 15; g_Map.log("Lowering sea ground"); createArea( @@ -75,27 +76,27 @@ // Keep water impassable on all mapsizes new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, scaleByMapSize(1, 3)), new HeightConstraint(-Infinity, heightWaterLevel)); - Engine.SetProgress(20); + yield 20; g_Map.log("Smoothing heightmap"); createArea( new MapBoundsPlacer(), new SmoothingPainter(1, scaleByMapSize(0.1, 0.2), 1)); - Engine.SetProgress(25); + yield 25; g_Map.log("Marking water"); createArea( new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.water), new HeightConstraint(-Infinity, heightWaterLevel)); - Engine.SetProgress(30); + yield 30; g_Map.log("Marking land"); createArea( new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.land), avoidClasses(g_TileClasses.water, 0)); - Engine.SetProgress(35); + yield 35; g_Map.log("Painting shoreline"); createArea( @@ -105,7 +106,7 @@ new TileClassPainter(g_TileClasses.shoreline) ], new HeightConstraint(-Infinity, heightShoreline)); - Engine.SetProgress(40); + yield 40; g_Map.log("Painting cliffs"); createArea( @@ -118,7 +119,7 @@ avoidClasses(g_TileClasses.water, 2), new SlopeConstraint(2, Infinity) ]); - Engine.SetProgress(45); + yield 45; if (!isNomad()) { @@ -139,7 +140,7 @@ position), new SmoothElevationPainter(ELEVATION_SET, g_Map.getHeight(position), 6)); } - Engine.SetProgress(50); + yield 50; addElements([ { @@ -172,7 +173,7 @@ "amounts": ["many"] } ]); - Engine.SetProgress(60); + yield 60; addElements(shuffleArray([ { @@ -244,7 +245,7 @@ "amounts": ["many"] } ])); - Engine.SetProgress(70); + yield 70; addElements(shuffleArray([ { @@ -310,7 +311,7 @@ "amounts": ["tons"] } ])); - Engine.SetProgress(80); + yield 80; g_Map.log("Adding reeds"); createObjectGroups( @@ -329,7 +330,7 @@ ], scaleByMapSize(50, 400), 2); - Engine.SetProgress(85); + yield 85; placePlayersNomad( g_Map.createTileClass(), @@ -370,5 +371,5 @@ setPPSaturation(0.42); setPPBloom(0.23); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/mediterranean.js =================================================================== --- binaries/data/mods/public/maps/random/mediterranean.js +++ binaries/data/mods/public/maps/random/mediterranean.js @@ -21,6 +21,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap(mapSettings) { TILE_CENTERED_HEIGHT_MAP = true; @@ -28,7 +29,7 @@ const tSnowedRocks = ["alpine_cliff_b", "alpine_cliff_snow"]; setBiome("generic/aegean"); - const heightScale = num => num * g_MapSettings.Size / 320; + const heightScale = num => num * mapSettings.Size / 320; const heightSeaGround = heightScale(-6); const heightWaterLevel = heightScale(0); @@ -41,7 +42,7 @@ const mapBounds = g_Map.getBounds(); g_Map.LoadHeightmapImage("mediterranean.png", 0, 40); - Engine.SetProgress(15); + yield 15; initTileClasses([ "autumn", @@ -105,27 +106,27 @@ new MapBoundsPlacer(), new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 2), new HeightConstraint(-Infinity, heightWaterLevel)); - Engine.SetProgress(20); + yield 20; g_Map.log("Smoothing heightmap"); createArea( new MapBoundsPlacer(), new SmoothingPainter(1, scaleByMapSize(0.3, 0.8), 1)); - Engine.SetProgress(25); + yield 25; g_Map.log("Marking water"); createArea( new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.water), new HeightConstraint(-Infinity, heightWaterLevel)); - Engine.SetProgress(30); + yield 30; g_Map.log("Marking land"); createArea( new DiskPlacer(fractionToTiles(0.5), mapCenter), new TileClassPainter(g_TileClasses.land), avoidClasses(g_TileClasses.water, 0)); - Engine.SetProgress(35); + yield 35; g_Map.log("Marking climate zones"); for (const zone of climateZones) @@ -144,7 +145,7 @@ zone.constraint ]); } - Engine.SetProgress(40); + yield 40; g_Map.log("Fuzzing biome borders"); for (const zone of climateZones) @@ -171,7 +172,7 @@ scaleByMapSize(20, 60), g_TileClasses.dirt); } - Engine.SetProgress(45); + yield 45; if (!isNomad()) { @@ -198,7 +199,7 @@ createBase(playerIDs[i], playerPosition[i], mapSize >= 384); } } - Engine.SetProgress(50); + yield 50; for (const zone of climateZones) { @@ -388,7 +389,7 @@ } ]); } - Engine.SetProgress(60); + yield 60; g_Map.log("Painting water"); createArea( @@ -408,7 +409,7 @@ g_TileClasses.player, 6) ]); - Engine.SetProgress(70); + yield 70; g_Map.log("Placing fish"); g_Gaia.fish = "gaia/fish/generic"; @@ -424,7 +425,7 @@ "amounts": ["many"] } ]); - Engine.SetProgress(85); + yield 85; g_Map.log("Placing whale"); g_Gaia.fish = "gaia/fauna_whale_fin"; @@ -442,7 +443,7 @@ "amounts": ["scarce"] } ]); - Engine.SetProgress(95); + yield 95; placePlayersNomad( g_Map.createTileClass(), @@ -480,5 +481,5 @@ setPPSaturation(0.42); setPPBloom(0.23); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/migration.js =================================================================== --- binaries/data/mods/public/maps/random/migration.js +++ binaries/data/mods/public/maps/random/migration.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -101,7 +102,7 @@ findLocationInDirectionBasedOnHeight(playerPosition[i], mapCenter, -3, 2.6, 3); g_Map.placeEntityPassable(oDock, playerIDs[i], dockLocation, playerAngle[i] + Math.PI); } - Engine.SetProgress(10); + yield 10; placePlayerBases({ "PlayerPlacement": [playerIDs, playerPosition], @@ -136,7 +137,7 @@ "template": aGrassShort } }); - Engine.SetProgress(15); + yield 15; g_Map.log("Create the continent body"); const continentPosition = @@ -149,7 +150,7 @@ new TileClassPainter(clLand) ], avoidClasses(clIsland, 8)); - Engine.SetProgress(20); + yield 20; g_Map.log("Creating shore jaggedness"); createAreas( @@ -168,7 +169,7 @@ paintTerrainBasedOnHeight(1, 3, 0, tShore); paintTerrainBasedOnHeight(-8, 1, 2, tWater); - Engine.SetProgress(25); + yield 25; g_Map.log("Creating bumps"); createAreas( @@ -177,7 +178,7 @@ [avoidClasses(clIsland, 10), stayClasses(clLand, 3)], scaleByMapSize(100, 200) ); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating hills"); createAreas( @@ -190,7 +191,7 @@ [avoidClasses(clIsland, 10, clHill, 15), stayClasses(clLand, 7)], scaleByMapSize(1, 4) * numPlayers ); - Engine.SetProgress(34); + yield 34; g_Map.log("Creating forests"); const [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1)); @@ -212,7 +213,7 @@ ], [avoidClasses(clPlayer, 6, clForest, 10, clHill, 0), stayClasses(clLand, 7)], num); - Engine.SetProgress(38); + yield 38; g_Map.log("Creating dirt patches"); for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)]) @@ -238,7 +239,7 @@ ], scaleByMapSize(15, 45)); - Engine.SetProgress(42); + yield 42; g_Map.log("Creating grass patches"); for (const size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)]) @@ -247,7 +248,7 @@ new TerrainPainter(tTier4Terrain), [avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clIsland, 0), stayClasses(clLand, 7)], scaleByMapSize(15, 45)); - Engine.SetProgress(46); + yield 46; g_Map.log("Creating stone mines"); let group = new SimpleGroup( @@ -259,7 +260,7 @@ [avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1), stayClasses(clLand, 7)], scaleByMapSize(4, 16), 100 ); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating small stone quarries"); group = new SimpleGroup([new SimpleObject(oStoneSmall, 2, 5, 1, 3)], true, clRock); @@ -267,7 +268,7 @@ [avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1), stayClasses(clLand, 7)], scaleByMapSize(4, 16), 100 ); - Engine.SetProgress(54); + yield 54; g_Map.log("Creating metal mines"); group = new SimpleGroup([new SimpleObject(oMetalLarge, 1, 1, 0, 4)], true, clMetal); @@ -278,7 +279,7 @@ ], scaleByMapSize(4, 16), 100 ); - Engine.SetProgress(58); + yield 58; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup( @@ -290,7 +291,7 @@ [avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), stayClasses(clLand, 6)], scaleByMapSize(16, 262), 50 ); - Engine.SetProgress(62); + yield 62; g_Map.log("Creating large decorative rocks"); group = new SimpleGroup( @@ -302,7 +303,7 @@ [avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), stayClasses(clLand, 6)], scaleByMapSize(8, 131), 50 ); - Engine.SetProgress(66); + yield 66; g_Map.log("Creating deer"); group = new SimpleGroup( @@ -313,7 +314,7 @@ [avoidClasses(clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), stayClasses(clLand, 7)], 3 * numPlayers, 50 ); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating sheep"); group = new SimpleGroup( @@ -324,7 +325,7 @@ [avoidClasses(clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), stayClasses(clLand, 7)], 3 * numPlayers, 50 ); - Engine.SetProgress(74); + yield 74; g_Map.log("Creating fruit bush"); group = new SimpleGroup( @@ -335,7 +336,7 @@ [avoidClasses(clForest, 0, clPlayer, 8, clHill, 1, clFood, 20), stayClasses(clLand, 7)], randIntInclusive(1, 4) * numPlayers + 2, 50 ); - Engine.SetProgress(78); + yield 78; g_Map.log("Creating fish"); createObjectGroupsDeprecated( @@ -344,7 +345,7 @@ avoidClasses(clLand, 2, clPlayer, 2, clHill, 0, clFood, 20), 25 * numPlayers, 60 ); - Engine.SetProgress(82); + yield 82; createStragglerTrees( [oTree1, oTree2, oTree4, oTree3], @@ -355,7 +356,7 @@ clForest, stragglerTrees); - Engine.SetProgress(86); + yield 86; const planetm = currentBiome() == "generic/india" ? 8 : 1; @@ -367,7 +368,7 @@ [avoidClasses(clHill, 2, clPlayer, 2, clDirt, 0), stayClasses(clLand, 6)], planetm * scaleByMapSize(13, 200) ); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating large grass tufts"); group = new SimpleGroup( @@ -380,7 +381,7 @@ [avoidClasses(clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0), stayClasses(clLand, 6)], planetm * scaleByMapSize(13, 200) ); - Engine.SetProgress(94); + yield 94; g_Map.log("Creating bushes"); group = new SimpleGroup( @@ -390,7 +391,7 @@ [avoidClasses(clHill, 1, clPlayer, 1, clDirt, 1), stayClasses(clLand, 6)], planetm * scaleByMapSize(13, 200), 50 ); - Engine.SetProgress(98); + yield 98; setSkySet(pickRandom(["cirrus", "cumulus", "sunny"])); setSunRotation(randomAngle()); @@ -403,5 +404,5 @@ avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2) ]); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/neareastern_badlands.js =================================================================== --- binaries/data/mods/public/maps/random/neareastern_badlands.js +++ binaries/data/mods/public/maps/random/neareastern_badlands.js @@ -2,8 +2,9 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap(mapSettings) { - if (g_MapSettings.Biome) + if (mapSettings.Biome) setSelectedBiome(); else setBiome("generic/sahara"); @@ -117,7 +118,7 @@ } // No decoratives }); - Engine.SetProgress(10); + yield 10; g_Map.log("Creating dune patches"); createAreas( @@ -128,7 +129,7 @@ ], avoidClasses(clPatch, 2, clPlayer, 0), scaleByMapSize(5, 20)); - Engine.SetProgress(15); + yield 15; g_Map.log("Creating sand patches"); createAreas( @@ -139,7 +140,7 @@ ], avoidClasses(clPatch, 2, clPlayer, 0), scaleByMapSize(15, 50)); - Engine.SetProgress(20); + yield 20; g_Map.log("Creating dirt patches"); createAreas( @@ -150,7 +151,7 @@ ], avoidClasses(clPatch, 2, clPlayer, 0), scaleByMapSize(15, 50)); - Engine.SetProgress(25); + yield 25; g_Map.log("Creating oasis"); createArea( @@ -169,7 +170,7 @@ new TileClassPainter(clOasis) ]); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating oasis wildlife"); let num = Math.round(Math.PI * oasisRadius / 8); @@ -217,7 +218,7 @@ createObjectGroup( new SimpleGroup([new SimpleObject(oFish, 1, 1, 0, 1)], true, clFood, fishPosition), 0); } - Engine.SetProgress(35); + yield 35; g_Map.log("Creating level 1 hills"); let hillAreas = createAreas( @@ -230,7 +231,7 @@ avoidClasses(clOasis, 3, clPlayer, 0, clHill1, 10), scaleByMapSize(10, 20), 100 ); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating small level 1 hills"); hillAreas = hillAreas.concat( @@ -245,7 +246,7 @@ scaleByMapSize(15, 25), 100)); - Engine.SetProgress(45); + yield 45; g_Map.log("Creating decorative rocks"); createObjectGroupsByAreasDeprecated( @@ -257,7 +258,7 @@ scaleByMapSize(40, 200), 50, hillAreas); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating level 2 hills"); createAreasInAreas( @@ -271,7 +272,7 @@ 50, hillAreas); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating level 3 hills"); createAreas( @@ -284,7 +285,7 @@ scaleByMapSize(15, 25), 50 ); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating bumps"); createAreas( @@ -294,7 +295,7 @@ scaleByMapSize(100, 200) ); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating forests"); const [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.5); @@ -309,7 +310,7 @@ num, 50); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating metal mines"); createBalancedMetalMines( oMetalSmall, @@ -325,7 +326,7 @@ clRock, avoidClasses(clOasis, 2, clForest, 0, clPlayer, scaleByMapSize(15, 25), clHill1, 1, clMetal, 10) ); - Engine.SetProgress(80); + yield 80; g_Map.log("Creating gazelles"); let group = new SimpleGroup([new SimpleObject(oGazelle, 5, 7, 0, 4)], true, clFood); @@ -347,14 +348,14 @@ avoidClasses(clOasis, 1, clForest, 0, clPlayer, 5, clHill1, 1, clFood, 10), scaleByMapSize(5, 20), 50 ); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oDatePalm, oSDatePalm], avoidClasses(clOasis, 1, clForest, 0, clHill1, 1, clPlayer, 4, clMetal, 6, clRock, 6), clForest, stragglerTrees); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating bushes"); group = new SimpleGroup([new RandomObject(aBushes, 2, 3, 0, 2)]); @@ -377,5 +378,5 @@ setWaterType("clap"); setWaterHeight(20); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/new_rms_test.js =================================================================== --- binaries/data/mods/public/maps/random/new_rms_test.js +++ binaries/data/mods/public/maps/random/new_rms_test.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { globalThis.g_Map = new RandomMap(0, "grass1_spring"); @@ -10,5 +11,5 @@ placePlayersNomad(g_Map.createTileClass()); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/ngorongoro.js =================================================================== --- binaries/data/mods/public/maps/random/ngorongoro.js +++ binaries/data/mods/public/maps/random/ngorongoro.js @@ -21,6 +21,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setBiome("generic/savanna"); @@ -43,7 +44,7 @@ g_Decoratives.bushMedium = "actor|props/flora/bush_desert_dry_a.xml"; g_Decoratives.bushSmall = "actor|props/flora/bush_dry_a.xml"; - const heightScale = num => num * g_MapSettings.Size / 320; + const heightScale = num => num * mapSettings.Size / 320; const heightHighlands = heightScale(45); const heightEden = heightScale(60); @@ -90,26 +91,26 @@ initTileClasses(["eden", "highlands"]); g_Map.LoadHeightmapImage("ngorongoro.png", 0, heightMax); - Engine.SetProgress(15); + yield 15; g_Map.log("Smoothing heightmap"); createArea( new MapBoundsPlacer(), new SmoothingPainter(1, scaleByMapSize(0.1, 0.5), 1)); - Engine.SetProgress(25); + yield 25; g_Map.log("Marking land"); createArea( new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.land)); - Engine.SetProgress(40); + yield 40; g_Map.log("Marking eden"); createArea( new DiskPlacer(fractionToTiles(0.14), mapCenter), new TileClassPainter(g_TileClasses.eden), new HeightConstraint(-Infinity, heightEden)); - Engine.SetProgress(45); + yield 45; g_Map.log("Marking highlands"); createArea( @@ -119,7 +120,7 @@ new HeightConstraint(heightHighlands, Infinity), avoidClasses(g_TileClasses.eden, 0) ]); - Engine.SetProgress(50); + yield 50; g_Map.log("Painting cliffs"); createArea( @@ -129,7 +130,7 @@ new TileClassPainter(g_TileClasses.mountain), ], new SlopeConstraint(2, Infinity)); - Engine.SetProgress(55); + yield 55 if (!isNomad()) { @@ -288,7 +289,7 @@ "amounts": ["many"] } ])); - Engine.SetProgress(60); + yield 60; g_Map.log("Render highlands"); setBiomeHighlands(); @@ -399,7 +400,7 @@ "amounts": ["many"] } ])); - Engine.SetProgress(70); + yield 70; g_Map.log("Render eden"); setBiomeEden(); @@ -541,7 +542,7 @@ "amounts": ["scarce"] } ])); - Engine.SetProgress(80); + yield 80; placePlayersNomad( g_Map.createTileClass(), @@ -571,5 +572,5 @@ setPPSaturation(0.42); setPPBloom(0.23); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/northern_lights.js =================================================================== --- binaries/data/mods/public/maps/random/northern_lights.js +++ binaries/data/mods/public/maps/random/northern_lights.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tSnowA = ["polar_snow_b"]; const tSnowB = "polar_ice_snow"; @@ -78,7 +79,7 @@ } // No decoratives }); - Engine.SetProgress(15); + yield 15; paintRiver({ "parallel": true, @@ -138,7 +139,7 @@ paintTerrainBasedOnHeight(1, 2.8, 1, tShoreBlend); paintTileClassBasedOnHeight(-6, 0.5, 1, clWater); - Engine.SetProgress(45); + yield 45; g_Map.log("Creating hills"); createAreas( @@ -180,7 +181,7 @@ [avoidClasses(clRock, 6), stayClasses(clWater, 4)], scaleByMapSize(4, 16), 100); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating dirt patches"); for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)]) @@ -237,7 +238,7 @@ avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1), scaleByMapSize(8, 32), 100 ); - Engine.SetProgress(80); + yield 80; createStragglerTrees( [oPine], @@ -255,7 +256,7 @@ 3 * numPlayers, 50 ); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating sheep"); group = new SimpleGroup( @@ -302,5 +303,5 @@ setPPEffect("hdr"); setSkySet("fog"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/oasis.js =================================================================== --- binaries/data/mods/public/maps/random/oasis.js +++ binaries/data/mods/public/maps/random/oasis.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tSand = [ "desert_sand_dunes_100", @@ -138,7 +139,7 @@ createObjectGroup(new SimpleGroup([new SimpleObject(aReedsA, 1, 3, 0, 0)], true, undefined, reedsPosition), 0); } - Engine.SetProgress(20); + yield 20; placePlayerBases({ "PlayerPlacement": [playerIDs, playerPosition], @@ -169,7 +170,7 @@ // Starting trees were set above // No decoratives }); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating central oasis"); createArea( @@ -182,7 +183,7 @@ new TileClassPainter(clOasis) ]); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating bumps"); createAreas( @@ -208,7 +209,7 @@ avoidClasses(clPlayer, 10, clBaseResource, 6, clOasis, 4, clForest, 4), scaleByMapSize(15, 50)); - Engine.SetProgress(50); + yield 50; if (mapSize > 150 && randBool()) { @@ -267,7 +268,7 @@ clHill, 1), scaleByMapSize(6, 25), 100 ); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup([new SimpleObject(aRock, 2, 4, 0, 2)], true, undefined); @@ -280,7 +281,7 @@ clFood, 20), 30, scaleByMapSize(10, 50)); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating camels"); group = new SimpleGroup( @@ -291,7 +292,7 @@ avoidClasses(clOasis, 3, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), 1 * numPlayers, 50 ); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating gazelles"); group = new SimpleGroup( @@ -302,7 +303,7 @@ avoidClasses(clOasis, 3, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), 1 * numPlayers, 50 ); - Engine.SetProgress(85); + yield 85; g_Map.log("Creating oasis animals"); for (let i = 0; i < scaleByMapSize(5, 30); ++i) @@ -324,7 +325,7 @@ animalPos), 0); } - Engine.SetProgress(90); + yield 90; g_Map.log("Creating bushes"); group = new SimpleGroup( @@ -396,5 +397,5 @@ setWaterMurkiness(0.5); setAmbientColor(0.501961, 0.501961, 0.501961); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/persian_highlands.js =================================================================== --- binaries/data/mods/public/maps/random/persian_highlands.js +++ binaries/data/mods/public/maps/random/persian_highlands.js @@ -2,8 +2,9 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap(mapSettings) { - if (g_MapSettings.Biome) + if (mapSettings.Biome) setSelectedBiome(); else // TODO: Replace ugly default for atlas by a dropdown @@ -90,7 +91,7 @@ } // No decoratives }); - Engine.SetProgress(10); + yield 10; g_Map.log("Creating rock patches"); createAreas( @@ -101,7 +102,7 @@ ], avoidClasses(clPatch, 2, clPlayer, 0), scaleByMapSize(5, 20)); - Engine.SetProgress(15); + yield 15; g_Map.log("Creating secondary rock patches"); createAreas( @@ -112,7 +113,7 @@ ], avoidClasses(clPatch, 2, clPlayer, 4), scaleByMapSize(15, 50)); - Engine.SetProgress(20); + yield 20; g_Map.log("Creating dirt patches"); createAreas( @@ -127,7 +128,7 @@ ], avoidClasses(clPatch, 2, clPlayer, 4), scaleByMapSize(15, 50)); - Engine.SetProgress(25); + yield 25; g_Map.log("Creating centeral plateau"); createArea( @@ -145,7 +146,7 @@ new TileClassPainter(clCP) ], avoidClasses(clPlayer, 18)); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating hills"); for (let i = 0; i < scaleByMapSize(20, 80); ++i) @@ -160,7 +161,7 @@ tCliff, clHill, 14); - Engine.SetProgress(35); + yield 35; g_Map.log("Creating forests"); const [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7); @@ -187,7 +188,7 @@ clHill, 1, clCP, 1), num); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating stone mines"); createObjectGroupsDeprecated( @@ -265,7 +266,7 @@ 5 * scaleByMapSize(5, 30), 50 ); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup( @@ -278,7 +279,7 @@ scaleByMapSize(16, 262), 50 ); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating bushes"); group = new SimpleGroup( @@ -291,7 +292,7 @@ scaleByMapSize(8, 131), 50 ); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating goat"); group = new SimpleGroup( @@ -333,7 +334,7 @@ 3 * numPlayers, 50 ); - Engine.SetProgress(90); + yield 90; createStragglerTrees( [oOak], @@ -350,5 +351,5 @@ placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/phoenician_levant.js =================================================================== --- binaries/data/mods/public/maps/random/phoenician_levant.js +++ binaries/data/mods/public/maps/random/phoenician_levant.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tCity = "medit_city_pavement"; const tCityPlaza = "medit_city_pavement"; @@ -110,7 +111,7 @@ "template": aBush1 } }); - Engine.SetProgress(30); + yield 30; paintRiver({ "parallel": true, @@ -124,7 +125,7 @@ "meanderShort": 20, "meanderLong": 0 }); - Engine.SetProgress(40); + yield 40; paintTileClassBasedOnHeight(-Infinity, heightLand, Elevation_ExcludeMin_ExcludeMax, clWater); paintTerrainBasedOnHeight(-Infinity, heightShore, Elevation_ExcludeMin_ExcludeMax, tWater); @@ -161,7 +162,7 @@ avoidClasses(clPlayer, 20, clForest, 10, clWater, 1, clHill, 1, clBaseResource, 3), num, 50); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating grass patches"); for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)]) @@ -175,7 +176,7 @@ ], avoidClasses(clForest, 0, clGrass, 5, clPlayer, 10, clWater, 4, clDirt, 5, clHill, 1), scaleByMapSize(15, 45)); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating dirt patches"); for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)]) @@ -189,7 +190,7 @@ ], avoidClasses(clForest, 0, clDirt, 5, clPlayer, 10, clWater, 4, clGrass, 5, clHill, 1), scaleByMapSize(15, 45)); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating cyprus"); createAreas( @@ -249,7 +250,7 @@ scaleByMapSize(4, 16), 100 ); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup( @@ -277,7 +278,7 @@ avoidClasses(clWater, 3, clPlayer, 0, clHill, 1), scaleByMapSize(40, 360), 50 ); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating fish"); group = new SimpleGroup([new SimpleObject(oFish, 1, 3, 2, 6)], true, clFood); @@ -316,7 +317,7 @@ avoidClasses(clWater, 3, clForest, 0, clPlayer, 15, clHill, 1, clFood, 7), randIntInclusive(1, 4) * numPlayers + 2, 50 ); - Engine.SetProgress(90); + yield 90; const stragglerTreeConfig = [ [1, avoidClasses(clForest, 0, clWater, 4, clPlayer, 8, clMetal, 6, clHill, 1)], @@ -355,5 +356,5 @@ placePlayersNomad(clPlayer, avoidClasses(clWater, 4, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/polar_sea.js =================================================================== --- binaries/data/mods/public/maps/random/polar_sea.js +++ binaries/data/mods/public/maps/random/polar_sea.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap(mapSettings) { const tPrimary = ["alpine_snow_01"]; const tSecondary = "alpine_snow_02"; @@ -84,7 +85,7 @@ "types": treasures }, }); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating central lake"); createArea( @@ -103,7 +104,7 @@ ], avoidClasses(clPlayer, 20)); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating small lakes"); createAreas( @@ -116,17 +117,17 @@ avoidClasses(clPlayer, 20), scaleByMapSize(10, 16), 1); - Engine.SetProgress(50); + yield 50; createBumps(avoidClasses(clWater, 2, clPlayer, 20)); - Engine.SetProgress(60); + yield 60; createHills( [tSecondary, tSecondary, tSecondary], avoidClasses(clPlayer, 20, clHill, 35), clHill, scaleByMapSize(20, 240)); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating glacier patches"); createPatches( @@ -135,7 +136,7 @@ avoidClasses(clWater, 3, clDirt, 5, clPlayer, 12), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating stone mines"); createMines( @@ -156,7 +157,7 @@ ], avoidClasses(clWater, 3, clPlayer, 20, clMetal, 18, clRock, 5, clHill, 2), clMetal); - Engine.SetProgress(75); + yield 75; createDecoration( [ @@ -182,7 +183,7 @@ scaleByMapAreaAbsolute(8) ], [stayClasses(clWater, 4), avoidClasses(clHill, 2)]); - Engine.SetProgress(80); + yield 80; createFood( [ @@ -221,7 +222,7 @@ ], [avoidClasses(clFood, 12, clHill, 5), stayClasses(clWater, 6)], clFood); - Engine.SetProgress(85); + yield 85; // Create trigger points where wolves spawn createObjectGroupsDeprecated( @@ -230,9 +231,9 @@ avoidClasses(clWater, 2, clMetal, 4, clRock, 4, clPlayer, 15, clHill, 2, clArcticWolf, 20), 1000, 100); - Engine.SetProgress(95); + yield 95; - if (g_MapSettings.Daytime !== undefined ? g_MapSettings.Daytime == "dawn" : randBool(1/3)) + if (mapSettings.Daytime !== undefined ? mapSettings.Daytime == "dawn" : randBool(1/3)) { setSkySet("sunset 1"); setSunColor(0.8, 0.7, 0.6); @@ -276,5 +277,5 @@ setPPSaturation(0.45); setPPBloom(0.4); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/pompeii.js =================================================================== --- binaries/data/mods/public/maps/random/pompeii.js +++ binaries/data/mods/public/maps/random/pompeii.js @@ -21,6 +21,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap(mapSettings) { setBiome("generic/aegean"); @@ -78,7 +79,7 @@ "actor|props/special/eyecandy/vase_rome_a.xml" ]; - const heightScale = num => num * g_MapSettings.Size / 320; + const heightScale = num => num * mapSettings.Size / 320; const heightSeaGround = heightScale(-30); const heightDockMin = heightScale(-6); @@ -95,34 +96,34 @@ initTileClasses(["decorative", "lava", "dock"]); g_Map.LoadHeightmapImage("pompeii.png", 0, heightMountains); - Engine.SetProgress(15); + yield 15; g_Map.log("Lowering sea ground"); createArea( new MapBoundsPlacer(), new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 2), new HeightConstraint(-Infinity, heightWaterLevel)); - Engine.SetProgress(20); + yield 20; g_Map.log("Smoothing heightmap"); createArea( new MapBoundsPlacer(), new SmoothingPainter(1, 0.8, 1)); - Engine.SetProgress(25); + yield 25; g_Map.log("Marking water"); createArea( new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.water), new HeightConstraint(-Infinity, heightWaterLevel)); - Engine.SetProgress(30); + yield 30; g_Map.log("Marking land"); createArea( new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.land), avoidClasses(g_TileClasses.water, 0)); - Engine.SetProgress(35); + yield 35; g_Map.log("Painting cliffs"); createArea( @@ -135,7 +136,7 @@ avoidClasses(g_TileClasses.water, 2), new SlopeConstraint(2, Infinity) ]); - Engine.SetProgress(45); + yield 45; g_Map.log("Painting lava"); const areaVesuv = createArea( @@ -148,7 +149,7 @@ new TileClassPainter(g_TileClasses.lava) ], new HeightConstraint(heightLavaVesuv, Infinity)); - Engine.SetProgress(46); + yield 46; g_Map.log("Adding smoke"); createObjectGroupsByAreas( @@ -163,7 +164,7 @@ scaleByMapSize(4, 12), 20, [areaVesuv]); - Engine.SetProgress(48); + yield 48; if (!isNomad()) { @@ -184,7 +185,7 @@ position), new SmoothElevationPainter(ELEVATION_SET, g_Map.getHeight(position), 6)); } - Engine.SetProgress(50); + yield 50; g_Map.log("Placing docks"); const dockTypes = [ @@ -208,7 +209,7 @@ ], 0, 50); - Engine.SetProgress(55); + yield 55; addElements([ { @@ -239,7 +240,7 @@ "amounts": ["normal"] } ]); - Engine.SetProgress(60); + yield 60; addElements(shuffleArray([ { @@ -290,7 +291,7 @@ "amounts": ["many"] } ])); - Engine.SetProgress(65); + yield 65; addElements(shuffleArray([ { @@ -337,7 +338,7 @@ "amounts": ["tons"] } ])); - Engine.SetProgress(70); + yield 70; g_Map.log("Adding gatherable stone statues"); createObjectGroups( @@ -357,7 +358,7 @@ ), 5 * scaleByMapSize(1, 4), 50); - Engine.SetProgress(75); + yield 75; g_Map.log("Adding stone ruins"); createObjectGroups( @@ -380,7 +381,7 @@ ), scaleByMapSize(1, 4), 20); - Engine.SetProgress(80); + yield 80; g_Map.log("Adding shipwrecks"); createObjectGroups( @@ -395,7 +396,7 @@ ], scaleByMapSize(1, 5), 20); - Engine.SetProgress(85); + yield 85; g_Map.log("Adding more statues"); createObjectGroups( @@ -412,7 +413,7 @@ ), scaleByMapSize(3, 15), 30); - Engine.SetProgress(90); + yield 90; g_Map.log("Adding skeletons"); createObjectGroups( @@ -431,7 +432,7 @@ ), scaleByMapSize(1, 5), 50); - Engine.SetProgress(95); + yield 95; placePlayersNomad( g_Map.createTileClass(), @@ -468,5 +469,5 @@ setPPSaturation(0.42); setPPBloom(0.23); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/pyrenean_sierra.js =================================================================== --- binaries/data/mods/public/maps/random/pyrenean_sierra.js +++ binaries/data/mods/public/maps/random/pyrenean_sierra.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { TILE_CENTERED_HEIGHT_MAP = true; @@ -231,7 +232,7 @@ "template": aGrassShort } }); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating the pyreneans"); const mountainVec = new Vector2D(mountainLength, 0).rotate(-startAngle); @@ -239,7 +240,7 @@ const mountainDirection = mountainVec.clone().normalize(); createPyreneans(); paintTileClassBasedOnHeight(heightPyreneans, Infinity, Elevation_ExcludeMin_ExcludeMax, clPyrenneans); - Engine.SetProgress(40); + yield 40; /** * Generates the mountain peak noise. @@ -310,7 +311,7 @@ "tileClass": clPass }); } - Engine.SetProgress(50); + yield 50; g_Map.log("Smoothing the pyreneans"); createArea( @@ -332,7 +333,7 @@ new MapBoundsPlacer(), new SmoothingPainter(5, 0.9, 1), new NearTileClassConstraint(clWater, 5)); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating hills"); createAreas( @@ -359,7 +360,7 @@ ], avoidClasses(clPlayer, 20, clPyrenneans, 0, clForest, 7, clWater, 2), num); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating lone trees"); num = scaleByMapSize(80, 400); @@ -435,7 +436,7 @@ avoidClasses(clWater, 3, clForest, 0, clPyrenneans, 5, clHill, 0, clDirt, 5, clPlayer, 6), scaleByMapSize(15, 45)); - Engine.SetProgress(70); + yield 70; // making more in dirt areas so as to appear different g_Map.log("Creating small grass tufts"); @@ -455,7 +456,7 @@ avoidClasses(clWater, 3, clHill, 2, clPlayer, 5, clDirt, 1, clForest, 0, clPyrenneans, 2), scaleByMapSize(13, 200)); createObjectGroupsDeprecated(group, 0, stayClasses(clDirt, 1), scaleByMapSize(13, 200), 10); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating bushes"); group = new SimpleGroup( @@ -466,7 +467,7 @@ createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 2, clPlayer, 1, clPyrenneans, 1), scaleByMapSize(13, 200), 50); - Engine.SetProgress(80); + yield 80; g_Map.log("Creating metal mines"); createBalancedMetalMines( @@ -489,7 +490,7 @@ clMetal, 10) ); - Engine.SetProgress(85); + yield 85; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup([new SimpleObject(aRockMedium, 1, 3, 0, 1)], true); @@ -505,7 +506,7 @@ createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 0, clForest, 0, clPlayer, 0), scaleByMapSize(8, 131), 50); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating deer"); group = new SimpleGroup([new SimpleObject(oDeer, 5, 7, 0, 4)], true, clFood); @@ -546,5 +547,5 @@ setWaterMurkiness(0.83); setWaterHeight(heightWaterLevel); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/ratumacos.js =================================================================== --- binaries/data/mods/public/maps/random/ratumacos.js +++ binaries/data/mods/public/maps/random/ratumacos.js @@ -21,6 +21,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap(mapSettings) { setBiome("generic/alpine"); @@ -50,7 +51,7 @@ g_Decoratives.reeds = "actor|props/flora/reeds_pond_lush_a.xml"; g_Decoratives.lillies = "actor|props/flora/water_lillies.xml"; - const heightScale = num => num * g_MapSettings.Size / 320; + const heightScale = num => num * mapSettings.Size / 320; const heightReedsMin = heightScale(-2); const heightShallow = heightScale(-1); @@ -67,13 +68,13 @@ initTileClasses(["shoreline", "shallows"]); g_Map.LoadHeightmapImage("ratumacos.png", -3, 20); - Engine.SetProgress(15); + yield 15; g_Map.log("Smoothing heightmap"); createArea( new MapBoundsPlacer(), new SmoothingPainter(1, 0.1, 1)); - Engine.SetProgress(25); + yield 25; g_Map.log("Creating shallows"); for (let i = 0; i < scaleByMapSize(5, 12); ++i) @@ -101,14 +102,14 @@ new TileClassPainter(g_TileClasses.water) ], new HeightConstraint(-Infinity, heightWaterLevel)); - Engine.SetProgress(30); + yield 30; g_Map.log("Marking land"); createArea( new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.land), avoidClasses(g_TileClasses.water, 0)); - Engine.SetProgress(35); + yield 35; g_Map.log("Painting shoreline"); createArea( @@ -118,7 +119,7 @@ new TileClassPainter(g_TileClasses.shoreline) ], new HeightConstraint(heightWaterLevel, heightShoreline)); - Engine.SetProgress(40); + yield 40; placePlayerBases({ "PlayerPlacement": playerPlacementRiver(riverAngle, fractionToTiles(0.6)), @@ -315,7 +316,7 @@ "amounts": ["tons"] } ])); - Engine.SetProgress(80); + yield 80; createDecoration( [ @@ -328,7 +329,7 @@ ], new HeightConstraint(heightReedsMin, heightShoreline) ); - Engine.SetProgress(90); + yield 90; g_Map.log("Placing fish"); addElements([ @@ -343,7 +344,7 @@ "amounts": ["few"] } ]); - Engine.SetProgress(95); + yield 95; placePlayersNomad( g_Map.createTileClass(), @@ -379,5 +380,5 @@ setPPSaturation(0.42); setPPBloom(0.23); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/red_sea.js =================================================================== --- binaries/data/mods/public/maps/random/red_sea.js +++ binaries/data/mods/public/maps/random/red_sea.js @@ -20,6 +20,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap(mapSettings) { TILE_CENTERED_HEIGHT_MAP = true; @@ -54,7 +55,7 @@ g_Decoratives.bushSmall = "actor|props/flora/bush_medit_sm_dry.xml"; g_Decoratives.dust = "actor|particle/dust_storm_reddish.xml"; - const heightScale = num => num * g_MapSettings.Size / 320; + const heightScale = num => num * mapSettings.Size / 320; const heightSeaGround = heightScale(-4); const heightReedsMin = heightScale(-2); @@ -69,34 +70,34 @@ initTileClasses(["shoreline"]); g_Map.LoadHeightmapImage("red_sea.png", 0, 25); - Engine.SetProgress(15); + yield 15; g_Map.log("Lowering sea ground"); createArea( new MapBoundsPlacer(), new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 2), new HeightConstraint(-Infinity, heightWaterLevel)); - Engine.SetProgress(20); + yield 20; g_Map.log("Smoothing heightmap"); createArea( new MapBoundsPlacer(), new SmoothingPainter(1, scaleByMapSize(0.1, 0.5), 1)); - Engine.SetProgress(25); + yield 25; g_Map.log("Marking water"); createArea( new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.water), new HeightConstraint(-Infinity, heightWaterLevel)); - Engine.SetProgress(30); + yield 30; g_Map.log("Marking land"); createArea( new DiskPlacer(fractionToTiles(0.5), mapCenter), new TileClassPainter(g_TileClasses.land), avoidClasses(g_TileClasses.water, 0)); - Engine.SetProgress(35); + yield 35; g_Map.log("Painting shoreline"); createArea( @@ -106,7 +107,7 @@ new TileClassPainter(g_TileClasses.shoreline) ], new HeightConstraint(-Infinity, heightShoreline)); - Engine.SetProgress(40); + yield 40; g_Map.log("Painting cliffs"); createArea( @@ -119,7 +120,7 @@ avoidClasses(g_TileClasses.water, 2), new SlopeConstraint(2, Infinity) ]); - Engine.SetProgress(45); + yield 45; if (!isNomad()) { @@ -188,7 +189,7 @@ "amounts": ["few"] } ])); - Engine.SetProgress(60); + yield 60; // Ensure initial forests addElements([{ @@ -206,7 +207,7 @@ "mixes": ["similar"], "amounts": ["tons"] }]); - Engine.SetProgress(65); + yield 65; addElements(shuffleArray([ { @@ -266,7 +267,7 @@ "amounts": ["many"] } ])); - Engine.SetProgress(70); + yield 70; addElements([ { @@ -296,7 +297,7 @@ "amounts": ["many"] } ]); - Engine.SetProgress(80); + yield 80; g_Map.log("Painting dirt patches"); const dirtPatches = [ @@ -326,7 +327,7 @@ dirtPatch.count, g_TileClasses.dirt, 0.5); - Engine.SetProgress(85); + yield 85; g_Map.log("Adding reeds"); createObjectGroups( @@ -341,7 +342,7 @@ new HeightConstraint(heightReedsMin, heightReedsMax), scaleByMapSize(10, 25), 5); - Engine.SetProgress(90); + yield 90; g_Map.log("Adding dust"); createObjectGroups( @@ -353,7 +354,7 @@ ], scaleByMapSize(10, 50), 20); - Engine.SetProgress(95); + yield 95; placePlayersNomad( g_Map.createTileClass(), @@ -390,5 +391,5 @@ setPPSaturation(0.42); setPPBloom(0.23); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/rhine_marshlands.js =================================================================== --- binaries/data/mods/public/maps/random/rhine_marshlands.js +++ binaries/data/mods/public/maps/random/rhine_marshlands.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tGrass = ["temp_grass", "temp_grass", "temp_grass_d"]; const tForestFloor = "temp_plants_bog"; @@ -80,7 +81,7 @@ "template": aGrassShort } }); - Engine.SetProgress(15); + yield 15; g_Map.log("Creating bumps"); createAreas( @@ -114,7 +115,7 @@ 0, stayClasses(clWater, 1), scaleByMapSize(400, 2000), 100); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating bumps"); createAreas( @@ -141,7 +142,7 @@ ], avoidClasses(clPlayer, 20, clWater, 0, clForest, 10), num); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating mud patches"); for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)]) @@ -179,7 +180,7 @@ scaleByMapSize(4, 16), 100 ); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup( @@ -192,7 +193,7 @@ scaleByMapSize(16, 262), 50 ); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating large decorative rocks"); group = new SimpleGroup( @@ -205,7 +206,7 @@ scaleByMapSize(8, 131), 50 ); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating deer"); group = new SimpleGroup( @@ -227,7 +228,7 @@ 3 * numPlayers, 50 ); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating rabbit"); group = new SimpleGroup( @@ -259,7 +260,7 @@ randIntInclusive(1, 4) * numPlayers + 2, 50 ); - Engine.SetProgress(80); + yield 80; createStragglerTrees( [oOak, oBeech], @@ -267,7 +268,7 @@ clForest, stragglerTrees); - Engine.SetProgress(85); + yield 85; g_Map.log("Creating small grass tufts"); createObjectGroupsDeprecated( @@ -276,7 +277,7 @@ avoidClasses(clWater, 2, clPlayer, 13, clDirt, 0), scaleByMapSize(13, 200)); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating large grass tufts"); createObjectGroupsDeprecated( @@ -289,7 +290,7 @@ avoidClasses(clWater, 3, clPlayer, 13, clDirt, 1, clForest, 0), scaleByMapSize(13, 200)); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating bushes"); createObjectGroupsDeprecated( @@ -321,5 +322,5 @@ setPPSaturation(0.44); setPPBloom(0.3); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/river_archipelago.js =================================================================== --- binaries/data/mods/public/maps/random/river_archipelago.js +++ binaries/data/mods/public/maps/random/river_archipelago.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tGrass = [ "tropic_grass_c", @@ -126,7 +127,7 @@ ]); } } - Engine.SetProgress(20); + yield 20; const playerPosition = playerPlacementLine(startAngle, mapCenter, fractionToTiles(1 - stripWidthsLeft[2][0] - stripWidthsLeft[2][1])); @@ -174,7 +175,7 @@ } // No decoratives }); - Engine.SetProgress(35); + yield 35; const areaWater = createArea( new HeightPlacer(Elevation_IncludeMin_ExcludeMax, -Infinity, heightWaterLevel), @@ -191,7 +192,7 @@ new HeightPlacer(Elevation_IncludeMin_ExcludeMax, heightShore, heightShoreBlend), new TerrainPainter(tShoreBlend)); - Engine.SetProgress(40); + yield 40; if (!isNomad()) { @@ -239,7 +240,7 @@ scaleByMapSize(1, 5)); createBumps(avoidClasses(clPlayer, 8, clWater, 2), scaleByMapSize(20, 150), 2, 8, 4, 1, 4); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating forests"); const [forestTrees, stragglerTrees] = getTreeCounts(1000, 4000, 0.7); @@ -283,7 +284,7 @@ clForest, stragglerTrees); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating grass patches"); for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)]) @@ -413,7 +414,7 @@ clBaseResource, 4, clDirt, 0), scaleByMapSize(100, 500)); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating large grass tufts"); createObjectGroups( @@ -431,7 +432,7 @@ clDirt, 1, clForest, 0), scaleByMapSize(100, 500)); - Engine.SetProgress(85); + yield 85; g_Map.log("Creating bushes"); createObjectGroups( @@ -492,7 +493,7 @@ clFood, 20), 2 * numPlayers, 20); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating berry bush"); createObjectGroups( @@ -540,5 +541,5 @@ setPPBloom(0.6); setSkySet("stratus"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/rivers.js =================================================================== --- binaries/data/mods/public/maps/random/rivers.js +++ binaries/data/mods/public/maps/random/rivers.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -163,7 +164,7 @@ } }); } - Engine.SetProgress(40); + yield 40; createBumps(avoidClasses(clWater, 2, clPlayer, 20)); @@ -181,7 +182,7 @@ clForest, forestTrees); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -199,7 +200,7 @@ avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating metal mines"); createBalancedMetalMines( @@ -217,7 +218,7 @@ avoidClasses(clWater, 3, clForest, 1, clPlayer, scaleByMapSize(20, 35), clHill, 1, clMetal, 10) ); - Engine.SetProgress(65); + yield 65; let planetm = 1; @@ -252,7 +253,7 @@ ], stayClasses(clShallow, 0)); - Engine.SetProgress(70); + yield 70; createFood( [ @@ -286,7 +287,7 @@ [avoidClasses(clFood, 20), stayClasses(clWater, 6)], clFood); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oTree1, oTree2, oTree4, oTree3], @@ -300,5 +301,5 @@ setWaterWaviness(3.0); setWaterType("lake"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/saharan_oases.js =================================================================== --- binaries/data/mods/public/maps/random/saharan_oases.js +++ binaries/data/mods/public/maps/random/saharan_oases.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tPrimary = "desert_sand_dunes_100"; const tCity = "desert_city_tile"; @@ -86,7 +87,7 @@ "template": aBush1 } }); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating oases"); const oasisRadius = fractionToTiles(scaleByMapSize(0.19, 0.22)); @@ -103,7 +104,7 @@ new TileClassPainter(clWater) ]); } - Engine.SetProgress(50); + yield 50; g_Map.log("Creating grass patches"); for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)]) @@ -118,7 +119,7 @@ ], avoidClasses(clForest, 0, clPlayer, 0, clWater, 1, clDirt, 5), scaleByMapSize(15, 45)); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating dirt patches"); for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)]) @@ -133,7 +134,7 @@ ], avoidClasses(clForest, 0, clDirt, 5, clPlayer, 0, clWater, 1), scaleByMapSize(15, 45)); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating stone mines"); let group = new SimpleGroup( @@ -253,5 +254,5 @@ setWaterType("clap"); setWaterMurkiness(0.5); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/sahel.js =================================================================== --- binaries/data/mods/public/maps/random/sahel.js +++ binaries/data/mods/public/maps/random/sahel.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tPrimary = "savanna_grass_a"; const tGrass2 = "savanna_grass_b"; @@ -78,7 +79,7 @@ } // No decoratives }); - Engine.SetProgress(20); + yield 20; g_Map.log("Creating big patches"); const patches = [tGrass2, tGrass3]; @@ -113,7 +114,7 @@ ], avoidClasses(clPlayer, 24), scaleByMapSize(1, 3)); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating stone mines"); for (let i = 0; i < scaleByMapSize(12, 30); ++i) @@ -133,7 +134,7 @@ scaleByMapSize(2, 8), 100 ); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup( @@ -146,7 +147,7 @@ scaleByMapSize(200, 1200), 1 ); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating gazelle"); group = new SimpleGroup( @@ -208,7 +209,7 @@ randIntInclusive(1, 4) * numPlayers + 2, 50 ); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oBaobab], @@ -244,5 +245,5 @@ setPPContrast(0.57031); setPPBloom(0.34); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/sahel_watering_holes.js =================================================================== --- binaries/data/mods/public/maps/random/sahel_watering_holes.js +++ binaries/data/mods/public/maps/random/sahel_watering_holes.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tGrass = "savanna_grass_a"; const tForestFloor = "savanna_forestfloor_a"; @@ -94,7 +95,7 @@ "template": aGrassShort } }); - Engine.SetProgress(20); + yield 20; g_Map.log("Creating rivers"); const riverStart = distributePointsOnCircle(numPlayers, startAngle + Math.PI / numPlayers, @@ -198,7 +199,7 @@ avoidClasses(clPlayer, 20, clForest, 10, clHill, 0, clWater, 2), num ); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating dirt patches"); for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)]) @@ -224,7 +225,7 @@ new TerrainPainter(tGrassPatch), avoidClasses(clWater, 3, clForest, 0, clHill, 0, clPlayer, 20), scaleByMapSize(15, 45)); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating stone mines"); let group = new SimpleGroup( @@ -251,7 +252,7 @@ scaleByMapSize(4, 16), 100 ); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup( @@ -275,7 +276,7 @@ scaleByMapSize(8, 131), 50 ); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating wildebeest"); group = new SimpleGroup( @@ -287,7 +288,7 @@ 3 * numPlayers, 50 ); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating gazelle"); group = new SimpleGroup( @@ -349,7 +350,7 @@ randIntInclusive(1, 4) * numPlayers + 2, 50 ); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oBaobab, oBaobab, oBaobab, oFig], @@ -367,7 +368,7 @@ planetm * scaleByMapSize(13, 200) ); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating large grass tufts"); group = new SimpleGroup( @@ -381,7 +382,7 @@ planetm * scaleByMapSize(13, 200) ); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating bushes"); group = new SimpleGroup( @@ -407,5 +408,5 @@ setWaterWaviness(0.5); setWaterType("clap"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/schwarzwald.js =================================================================== --- binaries/data/mods/public/maps/random/schwarzwald.js +++ binaries/data/mods/public/maps/random/schwarzwald.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("heightmap"); +function* GenerateMap() { setSkySet("fog"); setFogFactor(0.35); @@ -306,7 +307,7 @@ false); } - Engine.SetProgress(50); + yield 50; g_Map.log("Painting textures"); const betweenShallowAndShore = (heighLimits[3] + heighLimits[2]) / 2; @@ -321,7 +322,7 @@ new LayeredPainter([tWaterBorder, tWater], [2])); paintTileClassBasedOnHeight(heightRange.min, heighLimits[2], 1, clWater); - Engine.SetProgress(60); + yield 60; g_Map.log("Painting paths"); const pathBlending = numPlayers <= 4; @@ -340,7 +341,7 @@ ], avoidClasses(clPath, 0, clOpen, 0, clWater, 4, clBaseResource, 4)); } - Engine.SetProgress(75); + yield 75; g_Map.log("Creating decoration"); createDecoration( @@ -360,7 +361,7 @@ ], avoidClasses(clForest, 1, clPlayer, 0, clPath, 3, clWater, 3)); - Engine.SetProgress(80); + yield 80; g_Map.log("Growing fish"); createFood( @@ -373,7 +374,7 @@ [avoidClasses(clFood, 5), stayClasses(clWater, 4)], clFood); - Engine.SetProgress(85); + yield 85; g_Map.log("Planting reeds"); const types = [aReeds]; @@ -385,7 +386,7 @@ scaleByMapSize(1, 2) * 1000, 1000); - Engine.SetProgress(90); + yield 90; g_Map.log("Planting trees"); for (let x = 0; x < mapSize; x++) @@ -426,7 +427,7 @@ placePlayersNomad(clPlayer, avoidClasses(clWater, 4, clForest, 1, clFood, 2, clMetal, 4, clRock, 4)); - Engine.SetProgress(100); + yield 100; - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/scythian_rivulet.js =================================================================== --- binaries/data/mods/public/maps/random/scythian_rivulet.js +++ binaries/data/mods/public/maps/random/scythian_rivulet.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tMainTerrain = "alpine_snow_a"; const tTier1Terrain = "snow rough"; @@ -95,10 +96,10 @@ "meanderShort": 40, "meanderLong": 20 }); - Engine.SetProgress(10); + yield 10; paintTileClassBasedOnHeight(-Infinity, heightShoreUpper, Elevation_ExcludeMin_ExcludeMax, clRiver); - Engine.SetProgress(15); + yield 15; createTributaryRivers( startAngle + Math.PI / 2, @@ -111,7 +112,7 @@ undefined, avoidClasses(clPlayer, 4)); - Engine.SetProgress(25); + yield 25; placePlayerBases({ "PlayerPlacement": [playerIDs, playerPosition], @@ -151,7 +152,7 @@ "maxDist": 12 } }); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating pools"); createAreas( @@ -160,7 +161,7 @@ avoidClasses(clPlayer, 20), scaleByMapSize(6, 20)); - Engine.SetProgress(40); + yield 40; createBumps(avoidClasses(clPlayer, 2)); @@ -190,7 +191,7 @@ tShore); paintTerrainBasedOnHeight(heightSnowline, Infinity, Elevation_ExcludeMin_ExcludeMax, tMainTerrain); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -214,7 +215,7 @@ clForest, stragglerTrees); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating stone mines"); // Allow mines on the bumps at the river @@ -237,7 +238,7 @@ avoidClasses(clForest, 4, clWater, 1, clPlayer, 20, clMetal, 15, clRock, 5, clHill, 1), clMetal); - Engine.SetProgress(65); + yield 65; createDecoration( [ @@ -256,7 +257,7 @@ ], avoidClasses(clWater, 2, clForest, 0, clPlayer, 20, clHill, 1)); - Engine.SetProgress(70); + yield 70; createFood( [ @@ -275,7 +276,7 @@ ], avoidClasses(clWater, 3, clPlayer, 20, clHill, 1, clFood, 10)); - Engine.SetProgress(75); + yield 75; createFood( [ @@ -342,5 +343,5 @@ setPPSaturation(0.42); setPPBloom(0.6); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/snowflake_searocks.js =================================================================== --- binaries/data/mods/public/maps/random/snowflake_searocks.js +++ binaries/data/mods/public/maps/random/snowflake_searocks.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { TILE_CENTERED_HEIGHT_MAP = true; @@ -254,7 +255,7 @@ new MapBoundsPlacer(), new TerrainPainter(tCliff), new SlopeConstraint(2, Infinity)); - Engine.SetProgress(30); + yield 30; placePlayerBases({ "PlayerPlacement": [playerIDs, playerPosition], @@ -289,7 +290,7 @@ "template": aGrassShort } }); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating forests"); const [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1)); @@ -310,7 +311,7 @@ ], [avoidClasses(clPlayer, 6, clForest, 10), stayClasses(clLand, 4)], num); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating stone mines"); let group = new SimpleGroup( @@ -337,7 +338,7 @@ 5*scaleByMapSize(4, 16), 100 ); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating dirt patches"); for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)]) createAreas( @@ -385,7 +386,7 @@ scaleByMapSize(8, 131), 50 ); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating deer"); group = new SimpleGroup( @@ -397,7 +398,7 @@ 3 * numPlayers, 50 ); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating sheep"); group = new SimpleGroup( @@ -418,7 +419,7 @@ [avoidClasses(clForest, 0, clPlayer, 10, clFood, 20), stayClasses(clLand, 4)], 3 * numPlayers, 50 ); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oTree1, oTree2, oTree4, oTree3], @@ -439,7 +440,7 @@ planetm * scaleByMapSize(13, 200) ); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating large grass tufts"); group = new SimpleGroup( @@ -452,7 +453,7 @@ [avoidClasses(clPlayer, 2, clDirt, 1, clForest, 0), stayClasses(clLand, 4)], planetm * scaleByMapSize(13, 200) ); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating bushes"); group = new SimpleGroup( @@ -474,5 +475,5 @@ setSunRotation(randomAngle()); setSunElevation(Math.PI * randFloat(1/5, 1/3)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/stronghold.js =================================================================== --- binaries/data/mods/public/maps/random/stronghold.js +++ binaries/data/mods/public/maps/random/stronghold.js @@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen2"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -16,7 +17,7 @@ new MapBoundsPlacer(), new TileClassPainter(g_TileClasses.land)); - Engine.SetProgress(20); + yield 20; const [playerIDs, playerPosition] = createBases( @@ -29,7 +30,7 @@ false); markPlayerAvoidanceArea(playerPosition, defaultPlayerBaseRadius()); - Engine.SetProgress(30); + yield 30; addElements(shuffleArray([ { @@ -112,7 +113,7 @@ if (!isNomad()) createBluffsPassages(playerPosition); - Engine.SetProgress(60); + yield 60; addElements([ { @@ -146,7 +147,7 @@ "amounts": ["normal"] } ]); - Engine.SetProgress(70); + yield 70; addElements(shuffleArray([ { @@ -201,7 +202,7 @@ "amounts": ["few", "normal", "many", "tons"] } ])); - Engine.SetProgress(80); + yield 80; addElements(shuffleArray([ { @@ -259,7 +260,7 @@ "amounts": g_AllAmounts } ])); - Engine.SetProgress(90); + yield 90; placePlayersNomad( g_TileClasses.player, @@ -272,5 +273,5 @@ g_TileClasses.mountain, 4, g_TileClasses.animals, 2)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/survivalofthefittest.js =================================================================== --- binaries/data/mods/public/maps/random/survivalofthefittest.js +++ binaries/data/mods/public/maps/random/survivalofthefittest.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap() { setSelectedBiome(); @@ -74,7 +75,7 @@ new SmoothElevationPainter(ELEVATION_SET, heightLand, 3), new TileClassPainter(clLand) ]); - Engine.SetProgress(10); + yield 10; const [playerIDs, playerPosition, playerAngle, startAngle] = playerPlacementCircle(fractionToTiles(0.3)); @@ -125,12 +126,12 @@ clPlayer.add(attacker[i]); clPlayer.add(halfway[i]); } - Engine.SetProgress(20); + yield 20; paintTerrainBasedOnHeight(heightLand + 0.12, heightHill - 1, Elevation_IncludeMin_ExcludeMax, tCliff); paintTileClassBasedOnHeight(heightLand + 0.12, heightHill - 1, Elevation_IncludeMin_ExcludeMax, clHill); - Engine.SetProgress(30); + yield 30; const landConstraint = new StaticConstraint(stayClasses(clLand, 5)); @@ -141,10 +142,10 @@ [avoidClasses(clPlayer, 5, clHill, 5), landConstraint], scaleByMapSize(40, 140), 100); - Engine.SetProgress(35); + yield 35; createBumps(landConstraint); - Engine.SetProgress(40); + yield 40; const hillConstraint = new AndConstraint( [ @@ -161,7 +162,7 @@ [hillConstraint, landConstraint], clHill, scaleByMapSize(10, 60) * numPlayers); - Engine.SetProgress(45); + yield 45; createHills( [tCliff, tCliff, tHill], @@ -173,7 +174,7 @@ undefined, undefined, 55); - Engine.SetProgress(50); + yield 50; const [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1)); createForests( @@ -186,7 +187,7 @@ clForest, forestTrees); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating dirt patches"); createLayeredPatches( @@ -196,7 +197,7 @@ [avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12, clWomen, 5), landConstraint], scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating grass patches"); createPatches( @@ -205,7 +206,7 @@ [avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12, clWomen, 5), landConstraint], scaleByMapSize(15, 45), clDirt); - Engine.SetProgress(80); + yield 80; let planetm = 1; if (currentBiome() == "generic/india") @@ -227,7 +228,7 @@ planetm * scaleByMapAreaAbsolute(13) ], [avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), landConstraint]); - Engine.SetProgress(90); + yield 90; createStragglerTrees( [oTree1, oTree2, oTree4, oTree3], @@ -235,7 +236,7 @@ clForest, stragglerTrees); - Engine.SetProgress(95); + yield 95; - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/syria.js =================================================================== --- binaries/data/mods/public/maps/random/syria.js +++ binaries/data/mods/public/maps/random/syria.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tMainDirt = ["desert_dirt_rocks_1", "desert_dirt_cracks"]; const tForestFloor1 = "forestfloor_dirty"; @@ -76,7 +77,7 @@ new TileClassPainter(clGrass) ]); } - Engine.SetProgress(10); + yield 10; placePlayerBases({ "PlayerPlacement": [playerIDs, playerPosition], @@ -106,7 +107,7 @@ } // No decoratives }); - Engine.SetProgress(20); + yield 20; g_Map.log("Creating bumps"); createAreas( @@ -126,7 +127,7 @@ avoidClasses(clPlayer, 3, clGrass, 1, clHill, 10), scaleByMapSize(1, 3) * numPlayers * 3); - Engine.SetProgress(25); + yield 25; g_Map.log("Creating forests"); const [forestTrees, stragglerTrees] = getTreeCounts(400, 2000, 0.7); @@ -150,7 +151,7 @@ avoidClasses(clPlayer, 1, clGrass, 1, clForest, 10, clHill, 1), num); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating dirt patches"); for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)]) @@ -159,7 +160,7 @@ new LayeredPainter([tSecondaryDirt, tDirt], [1]), avoidClasses(clHill, 0, clForest, 0, clPlayer, 8, clGrass, 1), scaleByMapSize(50, 90)); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating big patches"); for (const size of [scaleByMapSize(6, 30), scaleByMapSize(10, 50), scaleByMapSize(16, 70)]) @@ -168,7 +169,7 @@ new LayeredPainter([tSecondaryDirt, tDirt], [1]), avoidClasses(clHill, 0, clForest, 0, clPlayer, 8, clGrass, 1), scaleByMapSize(30, 90)); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating stone mines"); createObjectGroupsDeprecated( @@ -224,7 +225,7 @@ avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), scaleByMapSize(50, 500), 50 ); - Engine.SetProgress(80); + yield 80; g_Map.log("Creating gazelle"); group = new SimpleGroup( @@ -255,7 +256,7 @@ avoidClasses(clForest, 0, clPlayer, 1, clHill, 1, clFood, 20, clGrass, 2), 3 * numPlayers, 50 ); - Engine.SetProgress(85); + yield 85; createStragglerTrees( [oPalm, oTamarix, oPine], @@ -291,5 +292,5 @@ setPPSaturation(0.42); setPPBloom(0.6); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/the_nile.js =================================================================== --- binaries/data/mods/public/maps/random/the_nile.js +++ binaries/data/mods/public/maps/random/the_nile.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tPrimary = "desert_sand_dunes_100"; const tCity = "desert_city_tile"; @@ -107,7 +108,7 @@ "template": aBush1 } }); - Engine.SetProgress(30); + yield 30; const riverTextures = [ { @@ -178,7 +179,7 @@ } } }); - Engine.SetProgress(40); + yield 40; g_Map.log("Creating bumps"); createAreas( @@ -230,7 +231,7 @@ num, 50); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating grass patches"); for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)]) @@ -255,7 +256,7 @@ clShore, 1, clPond, 1), scaleByMapSize(15, 45)); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating dirt patches"); for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)]) @@ -277,7 +278,7 @@ clPond, 1), scaleByMapSize(15, 45)); - Engine.SetProgress(60); + yield 60; g_Map.log("Creating stone mines"); let group = new SimpleGroup( @@ -338,7 +339,7 @@ scaleByMapSize(6, 20), 100 ); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup( @@ -366,7 +367,7 @@ avoidClasses(clWater, 1, clPlayer, 0, clPond, 1), scaleByMapSize(20, 180), 50 ); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating gazelles"); group = new SimpleGroup([new SimpleObject(oGazelle, 5, 7, 0, 4)], true, clFood); @@ -423,7 +424,7 @@ 3 * scaleByMapSize(5, 20), 50 ); - Engine.SetProgress(90); + yield 90; createStragglerTrees( [oDatePalm, oSDatePalm], @@ -502,5 +503,5 @@ setWaterWaviness(3.0); setWaterType("lake"); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/unknown.js =================================================================== --- binaries/data/mods/public/maps/random/unknown.js +++ binaries/data/mods/public/maps/random/unknown.js @@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); +function* GenerateMap(mapSettings) { TILE_CENTERED_HEIGHT_MAP = true; @@ -830,7 +831,7 @@ } } - (g_MapSettings.Landscape ? unknownMapFunctions[g_MapSettings.Landscape] : + (mapSettings.Landscape ? unknownMapFunctions[mapSettings.Landscape] : pickRandom(Object.values(unknownMapFunctions)))(); paintTerrainBasedOnHeight(heightCliff, 40, 1, tCliff); @@ -902,7 +903,7 @@ [avoidClasses(clPlayer, 15, clHill, randIntInclusive(6, 18)), stayClasses(clLand, 0)], randIntInclusive(0, scaleByMapSize(4, 8))*randIntInclusive(1, scaleByMapSize(4, 9)) ); - Engine.SetProgress(30); + yield 30; g_Map.log("Creating forests"); const [numForest, numStragglers] = getTreeCounts(...rBiomeTreeCount(1)); @@ -925,7 +926,7 @@ stayClasses(clLand, 4) ], num); - Engine.SetProgress(50); + yield 50; g_Map.log("Creating dirt patches"); const patchCount = (currentBiome() == "generic/savanna" ? 3 : 1) * scaleByMapSize(15, 45); @@ -953,7 +954,7 @@ [avoidClasses(clForest, 0, clHill, 2, clDirt, 5, clPlayer, 7), stayClasses(clLand, 4)], patchCount); - Engine.SetProgress(55); + yield 55; g_Map.log("Creating stone mines"); createObjectGroupsDeprecated( @@ -984,7 +985,7 @@ [avoidClasses(clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5, clHill, 2), stayClasses(clLand, 3)], randIntInclusive(scaleByMapSize(2, 9), scaleByMapSize(9, 40)), 100); - Engine.SetProgress(65); + yield 65; g_Map.log("Creating small decorative rocks"); createObjectGroupsDeprecated( @@ -1003,7 +1004,7 @@ [avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 2), stayClasses(clLand, 3)], scaleByMapSize(8, 131), 50); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating deer"); createObjectGroupsDeprecated( @@ -1026,7 +1027,7 @@ ], randIntInclusive(1, 4) * numPlayers + 2, 50); - Engine.SetProgress(75); + yield 75; g_Map.log("Creating sheep"); createObjectGroupsDeprecated( @@ -1046,7 +1047,7 @@ avoidClasses(clLand, 4, clForest, 0, clPlayer, 0, clHill, 2, clFood, 20), randIntInclusive(15, 40) * numPlayers, 60); - Engine.SetProgress(85); + yield 85; g_Map.log("Creating straggler trees"); types = [g_Gaia.tree1, g_Gaia.tree2, g_Gaia.tree3, g_Gaia.tree4]; @@ -1077,7 +1078,7 @@ 0, [avoidClasses(clWater, 2, clHill, 2, clPlayer, 2, clDirt, 0), stayClasses(clLand, 3)], planetm * scaleByMapSize(13, 200)); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating large grass tufts"); createObjectGroupsDeprecated( @@ -1092,7 +1093,7 @@ stayClasses(clLand, 3) ], planetm * scaleByMapSize(13, 200)); - Engine.SetProgress(95); + yield 95; g_Map.log("Creating shallow flora"); createObjectGroupsDeprecated( @@ -1118,5 +1119,5 @@ placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2, clWater, 10)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/volcanic_lands.js =================================================================== --- binaries/data/mods/public/maps/random/volcanic_lands.js +++ binaries/data/mods/public/maps/random/volcanic_lands.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { const tGrass = ["cliff volcanic light", "ocean_rock_a", "ocean_rock_b"]; const tGrassA = "cliff volcanic light"; @@ -60,10 +61,10 @@ "count": scaleByMapSize(12, 30) } }); - Engine.SetProgress(15); + yield 15; createVolcano(mapCenter, clHill, tCliff, [tLava1, tLava2, tLava3], true, ELEVATION_SET); - Engine.SetProgress(45); + yield 45; g_Map.log("Creating hills"); createAreas( @@ -95,7 +96,7 @@ avoidClasses(clPlayer, 12, clForest, 10, clHill, 0, clBaseResource, 6), num); - Engine.SetProgress(70); + yield 70; g_Map.log("Creating dirt patches"); for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)]) @@ -154,7 +155,7 @@ scaleByMapSize(4, 16), 100 ); - Engine.SetProgress(90); + yield 90; g_Map.log("Creating small decorative rocks"); group = new SimpleGroup( @@ -178,7 +179,7 @@ scaleByMapSize(8, 131), 50 ); - Engine.SetProgress(95); + yield 95; createStragglerTrees( [oTree], @@ -188,5 +189,5 @@ placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4)); - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/wall_demo.js =================================================================== --- binaries/data/mods/public/maps/random/wall_demo.js +++ binaries/data/mods/public/maps/random/wall_demo.js @@ -1,6 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); +function* GenerateMap() { globalThis.g_Map = new RandomMap(0, "grass1"); @@ -406,5 +407,5 @@ placeLinearWall(start, end, ['tower', 'medium'], wallStyleList[styleIndex], playerID); } - g_Map.ExportMap(); + return g_Map; } Index: binaries/data/mods/public/maps/random/wild_lake.js =================================================================== --- binaries/data/mods/public/maps/random/wild_lake.js +++ binaries/data/mods/public/maps/random/wild_lake.js @@ -3,6 +3,7 @@ Engine.LoadLibrary("rmbiome"); Engine.LoadLibrary("heightmap"); +function* GenerateMap() { globalThis.g_Map = new RandomMap(0, "whiteness"); @@ -508,7 +509,7 @@ g_Map.log("Rescaling map"); rescaleHeightmap(heightRange.min, heightRange.max); - Engine.SetProgress(25); + yield 25; /** * Prepare terrain texture placement @@ -549,7 +550,7 @@ new ClumpPlacer(diskArea(20), 0.8, 0.8, Infinity, position), new SmoothElevationPainter(ELEVATION_SET, g_Map.getHeight(position), 20)); - Engine.SetProgress(30); + yield 30; /** * Calculate tile centered height map after start position smoothing but @@ -621,7 +622,7 @@ if (entity) g_Map.placeEntityPassable(entity, 0, randomPositionOnTile(point), randomAngle()); } - Engine.SetProgress(40); + yield 40; g_Map.log("Placing resources"); const avoidPoints = playerPosition.map(pos => pos.clone()); @@ -630,7 +631,7 @@ const resourceSpots = getPointsByHeight(resourceSpotHeightRange, avoidPoints).map(point => new Vector2D(point.x, point.y)); - Engine.SetProgress(55); + yield 55; g_Map.log("Placing players"); if (isNomad()) @@ -687,5 +688,5 @@ radius / 3)); } - g_Map.ExportMap(); + return g_Map; }