forked from mirrors/0ad
Delete the remains of rmgen/utilityfunctions.js, refs #4804 by
cleaning up the createForests function. Remove g_numStragglerTrees and clForest references from the rmgen library. Compute the number of forest- and straggler trees in a new function instead of hiding it and obstructing the placement code. Remove unused numMultiplier argument. Replace duplication of these three functions with calls to them, refs #4805. Remove duplicate random biome JSON constants of the Islands, Migration and Snowflake Searocks map. There is significant partial createForests duplication that should be unified eventually. This was SVN commit r20406.
This commit is contained in:
@@ -176,11 +176,12 @@ paintTerrainBasedOnHeight(1, 2, 0, tShore);
|
||||
RMS.SetProgress(40);
|
||||
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
createForests(
|
||||
[tForestFloor, tForestFloor, tForestFloor, pForest, pForest],
|
||||
avoidClasses(clPlayer, 20, clForest, 17, clWater, 2, clBaseResource, 3),
|
||||
clForest
|
||||
);
|
||||
clForest,
|
||||
forestTrees);
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
@@ -332,11 +333,15 @@ RMS.SetProgress(90);
|
||||
var types = [oDatePalm, oSDatePalm, oCarob, oFanPalm, oPoplar, oCypress];
|
||||
createStragglerTrees(
|
||||
types,
|
||||
avoidClasses(clForest, 1, clWater, 2, clPlayer, 12, clMetal, 6, clHill, 1));
|
||||
avoidClasses(clForest, 1, clWater, 2, clPlayer, 12, clMetal, 6, clHill, 1),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating straggler island trees...");
|
||||
g_numStragglerTrees *= 10;
|
||||
createStragglerTrees(types, stayClasses(clIsland, 4));
|
||||
createStragglerTrees(
|
||||
types,
|
||||
stayClasses(clIsland, 4),
|
||||
clForest,
|
||||
stragglerTrees * 10);
|
||||
|
||||
setSkySet("cumulus");
|
||||
setSunColor(0.866667, 0.776471, 0.486275);
|
||||
|
||||
@@ -154,12 +154,12 @@ paintTerrainBasedOnHeight(floor(scaleByMapSize(20, 40)), 100, 3, tGrass);
|
||||
|
||||
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
createForests(
|
||||
[tPrimary, tForestFloor, tForestFloor, pForest, pForest],
|
||||
avoidClasses(clPlayer, 20, clForest, 20, clHill, 0, clWater, 2),
|
||||
clForest,
|
||||
1.0
|
||||
);
|
||||
forestTrees);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
createLayeredPatches(
|
||||
@@ -294,14 +294,15 @@ createFood(
|
||||
[
|
||||
15 * numPlayers
|
||||
],
|
||||
[avoidClasses(clFood, 20), stayClasses(clWater, 6)]
|
||||
);
|
||||
[avoidClasses(clFood, 20), stayClasses(clWater, 6)],
|
||||
clFood);
|
||||
RMS.SetProgress(85);
|
||||
|
||||
createStragglerTrees(
|
||||
[oBaobab],
|
||||
avoidClasses(clWater, 5, clForest, 2, clHill, 3, clPlayer, 12, clMetal, 4, clRock, 4)
|
||||
);
|
||||
avoidClasses(clWater, 5, clForest, 2, clHill, 3, clPlayer, 12, clMetal, 4, clRock, 4),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
setPPEffect("hdr");
|
||||
setPPSaturation(0.48);
|
||||
|
||||
@@ -236,12 +236,12 @@ paintTerrainBasedOnHeight(floor(scaleByMapSize(20, 40)), 100, 3, tSnowLimited);
|
||||
|
||||
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
createForests(
|
||||
[tPrimary, tForestFloor, tForestFloor, pForest, pForest],
|
||||
avoidClasses(clPlayer, 20, clForest, 17, clHill, 0, clWater, 2),
|
||||
clForest,
|
||||
1.0
|
||||
);
|
||||
forestTrees);
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
@@ -340,8 +340,11 @@ createFood
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
var types = [oPine];
|
||||
createStragglerTrees(types, avoidClasses(clWater, 5, clForest, 3, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6));
|
||||
createStragglerTrees(
|
||||
[oPine],
|
||||
avoidClasses(clWater, 5, clForest, 3, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
setSkySet(pickRandom(["cirrus", "cumulus", "sunny"]));
|
||||
setSunRotation(randFloat(0, TWO_PI));
|
||||
|
||||
@@ -378,26 +378,18 @@ createAreas(
|
||||
);
|
||||
RMS.SetProgress(50);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
var MIN_TREES = 500;
|
||||
var MAX_TREES = 3000;
|
||||
var P_FOREST = 0.7;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
var types = [
|
||||
[[tForestFloor, tPrimary, pForest], [tForestFloor, pForest]]
|
||||
];
|
||||
|
||||
var size = numForest / (scaleByMapSize(2,8) * numPlayers);
|
||||
var size = forestTrees / (scaleByMapSize(2,8) * numPlayers);
|
||||
|
||||
var num = Math.floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ClumpPlacer(numForest / num, 0.1, 0.1, 1),
|
||||
new ClumpPlacer(forestTrees / num, 0.1, 0.1, 1),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
paintClass(clForest)
|
||||
@@ -503,15 +495,11 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oPine, oPine];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1,1, 0,3)], true, clForest),
|
||||
0,
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oPine],
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
var planetm = 1;
|
||||
|
||||
@@ -129,18 +129,10 @@ createAreas(
|
||||
avoidClasses(clPlayer, 13),
|
||||
scaleByMapSize(300, 800));
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
var MIN_TREES = 220;
|
||||
var MAX_TREES = 1000;
|
||||
var P_FOREST = 0.65;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(220, 1000, 0.65);
|
||||
var types = [[[tForestFloor, tGrass, pForest], [tForestFloor, pForest]]];
|
||||
var size = numForest / (scaleByMapSize(2,8) * numPlayers);
|
||||
var size = forestTrees / (scaleByMapSize(2,8) * numPlayers);
|
||||
var num = 4 * floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
@@ -265,15 +257,11 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oBush, oPoplar];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 3)], true, clForest),
|
||||
0,
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 13, clMetal, 6, clRock, 6),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oBush, oPoplar],
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 13, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
|
||||
@@ -195,12 +195,12 @@ if (randBool())
|
||||
else
|
||||
createMountains(tCliff, [avoidClasses(clPlayer, 2, clHill, 15), stayClasses(clLand, 0)], clHill, scaleByMapSize(1, 4) * numPlayers);
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
createForests(
|
||||
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
|
||||
[avoidClasses(clPlayer, 20, clForest, 17, clHill, 0), stayClasses(clLand, 4)],
|
||||
clForest,
|
||||
1,
|
||||
...rBiomeTreeCount(1));
|
||||
forestTrees);
|
||||
RMS.SetProgress(50);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
@@ -300,10 +300,11 @@ createFood
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
createStragglerTrees(
|
||||
[oTree1, oTree2, oTree4, oTree3],
|
||||
[avoidClasses(clForest, 7, clHill, 1, clPlayer, 3, clMetal, 6, clRock, 6), stayClasses(clLand, 7)]);
|
||||
[avoidClasses(clForest, 7, clHill, 1, clPlayer, 3, clMetal, 6, clRock, 6), stayClasses(clLand, 7)],
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
setWaterWaviness(4.0);
|
||||
setWaterType("ocean");
|
||||
|
||||
@@ -183,6 +183,7 @@ createBumps(avoidClasses(clPlayer, 6, clWater, 2), scaleByMapSize(30, 300), 1, 8
|
||||
paintTerrainBasedOnHeight(4, 15, 0, tCliff);
|
||||
paintTerrainBasedOnHeight(15, 100, 3, tSnowLimited);
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
createForests(
|
||||
[tSecondary, tForestFloor, tForestFloor, pForest, pForest],
|
||||
avoidClasses(
|
||||
@@ -191,7 +192,7 @@ createForests(
|
||||
clHill, 20,
|
||||
clWater, 2),
|
||||
clForest,
|
||||
1);
|
||||
forestTrees);
|
||||
RMS.SetProgress(60);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
@@ -357,7 +358,9 @@ createStragglerTrees(
|
||||
clHill, 1,
|
||||
clPlayer, 12,
|
||||
clMetal, 4,
|
||||
clRock, 4));
|
||||
clRock, 4),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
setSkySet("sunset 1");
|
||||
setSunRotation(randFloat(0, 2 * PI));
|
||||
|
||||
@@ -328,36 +328,31 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
// Calculate desired number of trees for map (based on size)
|
||||
const MIN_TREES = 400;
|
||||
const MAX_TREES = 6000;
|
||||
const P_FOREST = 0.8;
|
||||
const P_FOREST_JOIN = 0.25;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST * (1.0 - P_FOREST_JOIN);
|
||||
var numForestJoin = totalTrees * P_FOREST * P_FOREST_JOIN;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var num = numForest / (scaleByMapSize(6,16) * numPlayers);
|
||||
placer = new ClumpPlacer(numForest / num, 0.1, 0.1, 1);
|
||||
painter = new TerrainPainter(pForest);
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(400, 6000, 0.8);
|
||||
var [forestTreesJoin, forestTrees] = getTreeCounts(forestTrees, forestTrees, 0.25);
|
||||
|
||||
var num = forestTrees / (scaleByMapSize(6, 16) * numPlayers);
|
||||
createAreasInAreas(
|
||||
placer,
|
||||
[painter, paintClass(clForest)],
|
||||
new ClumpPlacer(forestTrees / num, 0.1, 0.1, 1),
|
||||
[
|
||||
new TerrainPainter(pForest),
|
||||
paintClass(clForest)
|
||||
],
|
||||
avoidClasses(clPlayer, 5, clBaseResource, 4, clForest, 6, clHill, 4),
|
||||
num,
|
||||
100,
|
||||
[explorableArea]
|
||||
);
|
||||
|
||||
var num = numForestJoin / (scaleByMapSize(4,6) * numPlayers);
|
||||
placer = new ClumpPlacer(numForestJoin / num, 0.1, 0.1, 1);
|
||||
painter = new TerrainPainter(pForest);
|
||||
var num = forestTreesJoin / (scaleByMapSize(4,6) * numPlayers);
|
||||
createAreasInAreas(
|
||||
placer,
|
||||
[painter, paintClass(clForest), paintClass(clForestJoin)],
|
||||
new ClumpPlacer(forestTreesJoin / num, 0.1, 0.1, 1),
|
||||
[
|
||||
new TerrainPainter(pForest),
|
||||
paintClass(clForest),
|
||||
paintClass(clForestJoin)
|
||||
],
|
||||
[avoidClasses(clPlayer, 5, clBaseResource, 4, clForestJoin, 5, clHill, 4), borderClasses(clForest, 1, 4)],
|
||||
num,
|
||||
100,
|
||||
@@ -475,7 +470,7 @@ RMS.SetProgress(90);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oOak, oOakLarge, oPine, oAleppoPine];
|
||||
var num = floor(numStragglers / types.length);
|
||||
var num = Math.floor(stragglerTrees / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsByAreasDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 3)], true, clForest),
|
||||
|
||||
@@ -135,11 +135,12 @@ createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 8), clHill, scaleByMa
|
||||
|
||||
RMS.SetProgress(25);
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
createForests(
|
||||
[tGrass, tForestFloor, tForestFloor, pForest1, pForest2],
|
||||
avoidClasses(clPlayer, 20, clForest, 14, clHill, 1),
|
||||
clForest,
|
||||
0.6);
|
||||
forestTrees);
|
||||
|
||||
RMS.SetProgress(40);
|
||||
|
||||
@@ -250,17 +251,15 @@ RMS.SetProgress(80);
|
||||
|
||||
createStragglerTrees(
|
||||
[oCarob, oAleppoPine],
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 10, clMetal, 6, clRock, 6, clTreasure, 4));
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 10, clMetal, 6, clRock, 6, clTreasure, 4),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating hill trees...");
|
||||
var types = [aCarob, aAleppoPine];
|
||||
var num = floor(0.2 * g_numStragglerTrees / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 3)], true, clForest),
|
||||
0,
|
||||
stayClasses(clHill, 2),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[aCarob, aAleppoPine],
|
||||
stayClasses(clHill, 2),
|
||||
clForest,
|
||||
stragglerTrees / 5);
|
||||
|
||||
setFogFactor(0.2);
|
||||
setFogThickness(0.14);
|
||||
|
||||
@@ -375,17 +375,11 @@ createObjectGroupsDeprecated(
|
||||
50);
|
||||
RMS.SetProgress(80);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
let treeTypes = [oToona, oBaobab, oBush, oBush];
|
||||
for (let treeType of treeTypes)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(treeType, 1, 3, 0, 3)],
|
||||
true,
|
||||
clForest),
|
||||
0,
|
||||
avoidClasses(clForest, 1, clWater, 1, clHill, 1, clPlayer, 13, clMetal, 1, clRock, 1),
|
||||
Math.floor(scaleByMapSize(60, 500) / treeTypes.length));
|
||||
createStragglerTrees(
|
||||
[oToona, oBaobab, oBush, oBush],
|
||||
avoidClasses(clForest, 1, clWater, 1, clHill, 1, clPlayer, 13, clMetal, 1, clRock, 1),
|
||||
clForest,
|
||||
scaleByMapSize(60, 500));
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
|
||||
@@ -209,11 +209,12 @@ log("Creating hills...");
|
||||
createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 2, clWater, 5, clHill, 15), clHill, scaleByMapSize(1, 4) * numPlayers);
|
||||
RMS.SetProgress(35);
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
createForests(
|
||||
[tGrass, tGrassDForest, tGrassPForest, pForestP, pForestD],
|
||||
avoidClasses(clPlayer, 1, clWater, 3, clForest, 17, clHill, 1),
|
||||
clForest
|
||||
);
|
||||
clForest,
|
||||
forestTrees);
|
||||
RMS.SetProgress(40);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
@@ -303,7 +304,9 @@ RMS.SetProgress(85);
|
||||
|
||||
createStragglerTrees(
|
||||
[oOak, oOakLarge, oPine, oApple],
|
||||
avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 1, clMetal, 6, clRock, 6));
|
||||
avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 1, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
RMS.SetProgress(90);
|
||||
|
||||
setSkySet("cirrus");
|
||||
|
||||
@@ -300,13 +300,12 @@ createHills([tCliff, tCliff, tHill], [avoidClasses(clPlayer, 2, clHill, 8, clHil
|
||||
// create hills outside the canyon
|
||||
createHills([tCliff, tCliff, tMainTerrain], avoidClasses(clLand, 1, clHill, 1), clHill, scaleByMapSize(20, 150), undefined, undefined, undefined, undefined, 40);
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
createForests(
|
||||
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
|
||||
[avoidClasses(clPlayer, 1, clForest, 15, clHill, 1, clHill2, 0), stayClasses(clLand, 4)],
|
||||
clForest,
|
||||
1,
|
||||
...rBiomeTreeCount(1)
|
||||
);
|
||||
forestTrees);
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
@@ -409,10 +408,11 @@ createFood
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
createStragglerTrees(
|
||||
[oTree1, oTree2, oTree4, oTree3],
|
||||
[avoidClasses(clForest, 1, clHill, 1, clPlayer, 9, clMetal, 6, clRock, 6, clHill2, 1), stayClasses(clLand, 3)]);
|
||||
[avoidClasses(clForest, 1, clHill, 1, clPlayer, 9, clMetal, 6, clRock, 6, clHill2, 1), stayClasses(clLand, 3)],
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating treasures...");
|
||||
for (let i = 0; i < randIntInclusive(3, 8); ++i)
|
||||
|
||||
@@ -180,12 +180,12 @@ if (randBool())
|
||||
else
|
||||
createMountains(tCliff, [avoidClasses(clPlayer, 20, clHill, 15, clBaseResource, 3), stayClasses(clLand, 5)], clHill, scaleByMapSize(1, 4) * numPlayers);
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
createForests(
|
||||
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
|
||||
[avoidClasses(clPlayer, 20, clForest, 17, clHill, 0, clBaseResource,2), stayClasses(clLand, 4)],
|
||||
clForest,
|
||||
1.0,
|
||||
...rBiomeTreeCount(1));
|
||||
forestTrees);
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
@@ -290,10 +290,11 @@ createFood
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
createStragglerTrees(
|
||||
[oTree1, oTree2, oTree4, oTree3],
|
||||
[avoidClasses(clForest, 7, clHill, 1, clPlayer, 9, clMetal, 6, clRock, 6), stayClasses(clLand, 7)]);
|
||||
[avoidClasses(clForest, 7, clHill, 1, clPlayer, 9, clMetal, 6, clRock, 6), stayClasses(clLand, 7)],
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
setWaterWaviness(1.0);
|
||||
setWaterType("ocean");
|
||||
|
||||
@@ -193,11 +193,12 @@ RMS.SetProgress(40);
|
||||
|
||||
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
createForests(
|
||||
[tForestFloor, tForestFloor, tForestFloor, pForest, pForest],
|
||||
avoidClasses(clPlayer, 20, clForest, 17, clWater, 2, clBaseResource, 3),
|
||||
clForest
|
||||
);
|
||||
clForest,
|
||||
forestTrees);
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
@@ -301,10 +302,11 @@ createFood
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
createStragglerTrees(
|
||||
[oDatePalm, oSDatePalm, oCarob, oFanPalm, oPoplar, oCypress],
|
||||
avoidClasses(clForest, 1, clWater, 2, clPlayer, 8, clBaseResource, 6, clMetal, 6, clRock, 6, clHill, 1));
|
||||
avoidClasses(clForest, 1, clWater, 2, clPlayer, 8, clBaseResource, 6, clMetal, 6, clRock, 6, clHill, 1),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
setSkySet("sunny");
|
||||
setSunColor(0.917, 0.828, 0.734);
|
||||
|
||||
@@ -462,12 +462,12 @@ else
|
||||
|
||||
RMS.SetProgress(45);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
createForests(
|
||||
[tForestFloor, tForestFloor, tForestFloor, pForest1, pForest2],
|
||||
avoidClasses(clPlayer, 16, clForest, 17, clWater, 5, clHill, 2, clGauls, 5, clPath, 1),
|
||||
clForest
|
||||
);
|
||||
clForest,
|
||||
forestTrees);
|
||||
RMS.SetProgress(50);
|
||||
|
||||
log("Creating grass patches...");
|
||||
@@ -657,14 +657,17 @@ createFood(
|
||||
);
|
||||
RMS.SetProgress(90);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
createStragglerTrees(
|
||||
treeTypes,
|
||||
avoidClasses(clForest, 2, clWater, 8, clPlayer, 16, clMetal, 4, clRock, 4, clFood, 1, clHill, 2, clGauls, 5, clPath, 5), clForest);
|
||||
avoidClasses(clForest, 2, clWater, 8, clPlayer, 16, clMetal, 4, clRock, 4, clFood, 1, clHill, 2, clGauls, 5, clPath, 5),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating island straggler trees...");
|
||||
g_numStragglerTrees *= 7;
|
||||
createStragglerTrees(treeTypes, [stayClasses(clIsland, 4), avoidClasses(clMetal, 4, clRock, 4, clTower, 4, clOutpost, 4)], clForest);
|
||||
createStragglerTrees(
|
||||
treeTypes,
|
||||
[stayClasses(clIsland, 4), avoidClasses(clMetal, 4, clRock, 4, clTower, 4, clOutpost, 4)],
|
||||
clForest,
|
||||
stragglerTrees * 7);
|
||||
RMS.SetProgress(95);
|
||||
|
||||
log("Creating animals on islands...");
|
||||
|
||||
@@ -242,12 +242,12 @@ RMS.SetProgress(30);
|
||||
createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 20, clHill, 15, clWater, 5), clHill, scaleByMapSize(1, 4) * numPlayers);
|
||||
RMS.SetProgress(50);
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
createForests(
|
||||
[tGrass, tGrassDForest, tGrassDForest, pForestD, pForestD],
|
||||
avoidClasses(clPlayer, 20, clForest, 17, clHill, 0, clWater, 6),
|
||||
clForest,
|
||||
1.0
|
||||
);
|
||||
forestTrees);
|
||||
RMS.SetProgress(70);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
@@ -354,10 +354,11 @@ createFood
|
||||
[avoidClasses(clFood, 6), stayClasses(clWater, 4)]
|
||||
);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
createStragglerTrees(
|
||||
[oBeech, oPoplar, oApple],
|
||||
avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 8, clMetal, 6, clRock, 6));
|
||||
avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 8, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
setSkySet("cirrus");
|
||||
setWaterColor(0.114, 0.192, 0.463);
|
||||
|
||||
@@ -54,11 +54,6 @@ const pForestP = [
|
||||
|
||||
InitMap();
|
||||
|
||||
var P_FOREST = 0.7;
|
||||
var totalTrees = scaleByMapSize(1200, 3000);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
@@ -215,15 +210,16 @@ createAreas(
|
||||
RMS.SetProgress(35);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(1200, 3000, 0.7);
|
||||
var types = [
|
||||
[[tGrassB, tGrassA, pForestD], [tGrassB, pForestD]],
|
||||
[[tGrassB, tGrassA, pForestP], [tGrassB, pForestP]]
|
||||
];
|
||||
var size = numForest / (scaleByMapSize(4, 12) * numPlayers);
|
||||
var size = forestTrees / (scaleByMapSize(4, 12) * numPlayers);
|
||||
var num = Math.floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ClumpPlacer(numForest / num, 0.1, 0.1, 1),
|
||||
new ClumpPlacer(forestTrees / num, 0.1, 0.1, 1),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
paintClass(clForest)
|
||||
@@ -446,27 +442,21 @@ createFood(
|
||||
clFood);
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees and bushes...");
|
||||
var types = [oTree, oTree2, oTree3, oTree4, oBush];
|
||||
var num = Math.floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(type, 1, 1, 0, 3)],
|
||||
true,
|
||||
clForest),
|
||||
0,
|
||||
[
|
||||
stayClasses(clGrass, 1),
|
||||
avoidClasses(
|
||||
clWater, 5,
|
||||
clForest, 1,
|
||||
clHill, 1,
|
||||
clPlayer, 0,
|
||||
clMetal, 1,
|
||||
clRock, 1)
|
||||
],
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oTree, oTree2, oTree3, oTree4, oBush],
|
||||
[
|
||||
stayClasses(clGrass, 1),
|
||||
avoidClasses(
|
||||
clWater, 5,
|
||||
clForest, 1,
|
||||
clHill, 1,
|
||||
clPlayer, 0,
|
||||
clMetal, 1,
|
||||
clRock, 1)
|
||||
],
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
log("Creating straggler bushes...");
|
||||
@@ -486,7 +476,7 @@ createObjectGroupsDeprecated(
|
||||
clMetal, 1,
|
||||
clRock, 1)
|
||||
],
|
||||
numStragglers);
|
||||
stragglerTrees);
|
||||
RMS.SetProgress(95);
|
||||
|
||||
log("Creating rain drops...");
|
||||
|
||||
@@ -279,17 +279,19 @@ createObjectGroupsDeprecated(
|
||||
10 * numPlayers,
|
||||
60);
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(0.7));
|
||||
createForests(
|
||||
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
|
||||
[avoidClasses(clPlayer, 25, clForest, 10, clBaseResource, 3, clMetal, 6, clRock, 3, clMountain, 2), stayClasses(clHill, 6)],
|
||||
clForest,
|
||||
0.7,
|
||||
...rBiomeTreeCount(0.7));
|
||||
forestTrees);
|
||||
|
||||
log("Creating straggeler trees...");
|
||||
let types = [oTree1, oTree2, oTree4, oTree3];
|
||||
createStragglerTrees(types, [avoidClasses(clBaseResource, 2, clMetal, 6, clRock, 3, clMountain, 2, clPlayer, 25), stayClasses(clHill, 6)]);
|
||||
|
||||
createStragglerTrees(
|
||||
types,
|
||||
[avoidClasses(clBaseResource, 2, clMetal, 6, clRock, 3, clMountain, 2, clPlayer, 25), stayClasses(clHill, 6)],
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
RMS.SetProgress(65);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
@@ -338,8 +340,11 @@ createFood(
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating more straggeler trees...");
|
||||
createStragglerTrees(types, avoidClasses(clWater, 5, clForest, 7, clMountain, 1, clPlayer, 30, clMetal, 6, clRock, 3));
|
||||
createStragglerTrees(
|
||||
types,
|
||||
avoidClasses(clWater, 5, clForest, 7, clMountain, 1, clPlayer, 30, clMetal, 6, clRock, 3),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating decoration...");
|
||||
var planetm = currentBiome() == "tropic" ? 8 : 1;
|
||||
@@ -361,12 +366,12 @@ createDecoration(
|
||||
avoidClasses(clForest, 2, clPlayer, 20, clMountain, 5, clFood, 1, clBaseResource, 2));
|
||||
|
||||
log("Creating water forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(0.1));
|
||||
createForests(
|
||||
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
|
||||
avoidClasses(clPlayer, 30, clHill, 10, clFood, 5),
|
||||
clForest,
|
||||
0.1,
|
||||
...rBiomeTreeCount(0.1));
|
||||
forestTrees);
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
createObjectGroupsDeprecated(
|
||||
|
||||
@@ -201,26 +201,18 @@ log("Creating hills...");
|
||||
createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 5, clWater, 5, clHill, 15), clHill, scaleByMapSize(1, 4) * numPlayers);
|
||||
RMS.SetProgress(40);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
const MIN_TREES = 500;
|
||||
const MAX_TREES = 2500;
|
||||
const P_FOREST = 0.7;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
g_numStragglerTrees = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7);
|
||||
var types = [
|
||||
[[tForestFloor, tGrass, pForestD], [tForestFloor, pForestD]],
|
||||
[[tForestFloor, tGrass, pForestO], [tForestFloor, pForestO]],
|
||||
[[tForestFloor, tGrass, pForestP], [tForestFloor, pForestP]]
|
||||
];
|
||||
var size = numForest / (scaleByMapSize(3,6) * numPlayers);
|
||||
var size = forestTrees / (scaleByMapSize(3,6) * numPlayers);
|
||||
var num = floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), numForest / num, 0.5),
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), forestTrees / num, 0.5),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
paintClass(clForest)
|
||||
@@ -314,10 +306,11 @@ createFood
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
createStragglerTrees(
|
||||
[oOak, oBeech, oPine],
|
||||
avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 1, clMetal, 6, clRock, 6));
|
||||
avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 1, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
RMS.SetProgress(95);
|
||||
|
||||
setSkySet("sunny");
|
||||
|
||||
@@ -271,12 +271,12 @@ if (randBool())
|
||||
else
|
||||
createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 15, clWater, 2), clHill, scaleByMapSize(1, 4) * numPlayers);
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
createForests(
|
||||
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
|
||||
avoidClasses(clPlayer, 20, clForest, 17, clHill, 0, clWater, 2),
|
||||
clForest,
|
||||
1,
|
||||
...rBiomeTreeCount(1));
|
||||
forestTrees);
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
@@ -377,6 +377,8 @@ createFood
|
||||
|
||||
createStragglerTrees(
|
||||
[oTree1, oTree2, oTree4, oTree3],
|
||||
avoidClasses(clWater, 5, clForest, 7, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6));
|
||||
avoidClasses(clWater, 5, clForest, 7, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
ExportMap();
|
||||
|
||||
@@ -199,11 +199,12 @@ paintTerrainBasedOnHeight(-8, 1, 2, tWater);
|
||||
|
||||
createBumps([avoidClasses(clPlayer, 20, clRiver, 1), stayClasses(clLand, 3)]);
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
createForests(
|
||||
[tGrass, tForestFloorP, tForestFloorC, pForestC, pForestP],
|
||||
[avoidClasses(clPlayer, 20, clForest, 17, clHill, 0, clRiver, 1), stayClasses(clLand, 7)],
|
||||
clForest,
|
||||
1.0);
|
||||
forestTrees);
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
@@ -314,10 +315,11 @@ createFood
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
createStragglerTrees(
|
||||
[oPoplar, oCarob, oApple],
|
||||
[avoidClasses(clForest, 1, clHill, 1, clPlayer, 9, clMetal, 6, clRock, 6, clRiver, 1), stayClasses(clLand, 7)]);
|
||||
[avoidClasses(clForest, 1, clHill, 1, clPlayer, 9, clMetal, 6, clRock, 6, clRiver, 1), stayClasses(clLand, 7)],
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
setSkySet("cumulus");
|
||||
setWaterColor(0.2,0.312,0.522);
|
||||
|
||||
@@ -266,11 +266,12 @@ if (randBool())
|
||||
else
|
||||
createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 15, clWater, 0), clHill, scaleByMapSize(1, 4) * numPlayers);
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
createForests(
|
||||
[tPrimary, tForestFloor, tForestFloor, pForest, pForest],
|
||||
avoidClasses(clPlayer, 20, clForest, 16, clHill, 0, clWater, 2),
|
||||
clForest,
|
||||
1);
|
||||
forestTrees);
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
@@ -358,9 +359,11 @@ if (random_terrain != 3)
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oPine];
|
||||
createStragglerTrees(types, avoidClasses(clWater, 3, clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6));
|
||||
createStragglerTrees(
|
||||
[oPine],
|
||||
avoidClasses(clWater, 3, clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
setSkySet("stormy");
|
||||
setSunRotation(randFloat(0, TWO_PI));
|
||||
|
||||
@@ -194,24 +194,16 @@ createAreas(
|
||||
|
||||
RMS.SetProgress(35);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
const MIN_TREES = 500;
|
||||
const MAX_TREES = 2500;
|
||||
const P_FOREST = 0.7;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating mainland forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7);
|
||||
var types = [
|
||||
[[tGrassDForest, tGrass, pForestD], [tGrassDForest, pForestD]]
|
||||
];
|
||||
var size = numForest * 1.3 / (scaleByMapSize(2,8) * numPlayers);
|
||||
var size = forestTrees * 1.3 / (scaleByMapSize(2,8) * numPlayers);
|
||||
var num = Math.floor(0.7 * size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ClumpPlacer(numForest / num, 0.1, 0.1, 1),
|
||||
new ClumpPlacer(forestTrees / num, 0.1, 0.1, 1),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
paintClass(clForest)
|
||||
@@ -224,11 +216,11 @@ log("Creating highland forests...");
|
||||
var types = [
|
||||
[[tGrassDForest, tGrass, pForestP], [tGrassDForest, pForestP]]
|
||||
];
|
||||
var size = numForest / (scaleByMapSize(2,8) * numPlayers);
|
||||
var size = forestTrees / (scaleByMapSize(2,8) * numPlayers);
|
||||
var num = floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ClumpPlacer(numForest / num, 0.1, 0.1, 1),
|
||||
new ClumpPlacer(forestTrees / num, 0.1, 0.1, 1),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
paintClass(clForest)
|
||||
@@ -345,15 +337,11 @@ createObjectGroupsDeprecated(group, 0,
|
||||
2 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oPoplar, oPalm, oApple];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 3)], true, clForest),
|
||||
0,
|
||||
avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 10, clMetal, 6, clRock, 6, clSea, 1, clHighlands, 25),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oPoplar, oPalm, oApple],
|
||||
avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 10, clMetal, 6, clRock, 6, clSea, 1, clHighlands, 25),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
|
||||
@@ -336,12 +336,12 @@ createMines(
|
||||
clRock
|
||||
);
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
createForests(
|
||||
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
|
||||
[avoidClasses(clPlayer, 10, clForest, 20, clHill, 10, clBaseResource, 5, clRock, 6, clMetal, 6), stayClasses(clLand, 3)],
|
||||
clForest,
|
||||
1,
|
||||
...rBiomeTreeCount(1));
|
||||
forestTrees);
|
||||
|
||||
log("Creating hills...");
|
||||
createAreas(
|
||||
@@ -359,10 +359,13 @@ for (let i = 0; i < 3; ++i)
|
||||
globalSmoothHeightmap();
|
||||
|
||||
createStragglerTrees(
|
||||
[oTree1, oTree2, oTree4, oTree3],
|
||||
[avoidClasses(clForest, 10, clPlayer, 20, clMetal, 6, clRock, 6, clHill, 1),
|
||||
stayClasses(clLand, 4)]
|
||||
);
|
||||
[oTree1, oTree2, oTree4, oTree3],
|
||||
[
|
||||
avoidClasses(clForest, 10, clPlayer, 20, clMetal, 6, clRock, 6, clHill, 1),
|
||||
stayClasses(clLand, 4)
|
||||
],
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
createFood(
|
||||
[
|
||||
|
||||
@@ -287,30 +287,8 @@ createAreas(
|
||||
[avoidClasses(clPlayer, 2, clHill, 15), stayClasses(clLand, 0)],
|
||||
scaleByMapSize(4, 13));
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
if (currentBiome() == "savanna")
|
||||
{
|
||||
var MIN_TREES = 200;
|
||||
var MAX_TREES = 1250;
|
||||
var P_FOREST = 0;
|
||||
}
|
||||
else if (currentBiome() == "tropic")
|
||||
{
|
||||
var MIN_TREES = 1000;
|
||||
var MAX_TREES = 6000;
|
||||
var P_FOREST = 0.52;
|
||||
}
|
||||
else
|
||||
{
|
||||
var MIN_TREES = 500;
|
||||
var MAX_TREES = 3000;
|
||||
var P_FOREST = 0.7;
|
||||
}
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
var types = [
|
||||
[[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]],
|
||||
[[tForestFloor1, tMainTerrain, pForest2], [tForestFloor1, pForest2]]
|
||||
@@ -318,11 +296,11 @@ var types = [
|
||||
|
||||
if (currentBiome() != "savanna")
|
||||
{
|
||||
var size = numForest / (scaleByMapSize(3,6) * numPlayers);
|
||||
var size = forestTrees / (scaleByMapSize(3,6) * numPlayers);
|
||||
var num = floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), numForest / (num * Math.floor(scaleByMapSize(2, 5))), 0.5),
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), forestTrees / (num * Math.floor(scaleByMapSize(2, 5))), 0.5),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
paintClass(clForest)
|
||||
@@ -445,15 +423,11 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oTree1, oTree2, oTree4, oTree3];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 3)], true, clForest),
|
||||
0,
|
||||
[avoidClasses(clForest, 1, clHill, 1, clPlayer, 0, clMetal, 6, clRock, 6), stayClasses(clLand, 6)],
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oTree1, oTree2, oTree4, oTree3],
|
||||
[avoidClasses(clForest, 1, clHill, 1, clPlayer, 0, clMetal, 6, clRock, 6), stayClasses(clLand, 6)],
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
var planetm = 1;
|
||||
if (currentBiome() == "tropic")
|
||||
|
||||
@@ -190,28 +190,20 @@ createAreas(
|
||||
[avoidClasses(clPlayer, 20, clHill, 5, clWater, 2, clBaseResource, 2), stayClasses(clMountains, 0)],
|
||||
scaleByMapSize(5, 40) * numPlayers);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
var MIN_TREES = 1000;
|
||||
var MAX_TREES = 6000;
|
||||
var P_FOREST = 0.7;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(1000, 6000, 0.7);
|
||||
var types = [
|
||||
[[tGrass, tGrass, tGrass, tGrass, pForestD], [tGrass, tGrass, tGrass, pForestD]],
|
||||
[[tGrass, tGrass, tGrass, tGrass, pForestP], [tGrass, tGrass, tGrass, pForestP]]
|
||||
];
|
||||
var size = numForest / (scaleByMapSize(3,6) * numPlayers);
|
||||
var size = forestTrees / (scaleByMapSize(3,6) * numPlayers);
|
||||
var num = floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ChainPlacer(
|
||||
1,
|
||||
Math.floor(scaleByMapSize(3, 5)),
|
||||
numForest / (num * Math.floor(scaleByMapSize(2, 4))),
|
||||
forestTrees / (num * Math.floor(scaleByMapSize(2, 4))),
|
||||
0.5),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
@@ -319,15 +311,11 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oTree, oPalm];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 3)], true, clForest),
|
||||
0,
|
||||
avoidClasses(clWater, 5, clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oTree, oPalm],
|
||||
avoidClasses(clWater, 5, clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating deer...");
|
||||
group = new SimpleGroup(
|
||||
|
||||
@@ -185,12 +185,12 @@ if (randBool())
|
||||
else
|
||||
createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 15, clWater, 2), clHill, scaleByMapSize(1, 4) * numPlayers);
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
createForests(
|
||||
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
|
||||
avoidClasses(clPlayer, 20, clForest, 17, clHill, 0, clWater, 2),
|
||||
clForest,
|
||||
1,
|
||||
...rBiomeTreeCount(1));
|
||||
forestTrees);
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
@@ -296,7 +296,9 @@ RMS.SetProgress(85);
|
||||
|
||||
createStragglerTrees(
|
||||
[oTree1, oTree2, oTree4, oTree3],
|
||||
avoidClasses(clWater, 5, clForest, 7, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6));
|
||||
avoidClasses(clWater, 5, clForest, 7, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
setWaterWaviness(4.0);
|
||||
setWaterType("lake");
|
||||
|
||||
@@ -440,15 +440,12 @@ createObjectGroups(group, 0,
|
||||
);
|
||||
RMS.SetProgress(60);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
for (let tree of [oCarob, oBeech, oLombardyPoplar, oLombardyPoplar, oPine])
|
||||
{
|
||||
group = new SimpleGroup([new SimpleObject(tree, 1,1, 0,1)], true, clForest);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 5, clCliff, 4, clForest, 2, clPlayer, 15, clMetal, 6, clRock, 6),
|
||||
scaleByMapSize(2, 38), 50
|
||||
);
|
||||
}
|
||||
createStragglerTrees(
|
||||
[oCarob, oBeech, oLombardyPoplar, oLombardyPoplar, oPine],
|
||||
avoidClasses(clWater, 5, clCliff, 4, clForest, 2, clPlayer, 15, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
scaleByMapSize(10, 190));
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
log("Creating straggler cypresses...");
|
||||
|
||||
@@ -258,35 +258,12 @@ createAreas(
|
||||
);
|
||||
RMS.SetProgress(55);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
const MIN_TREES = 500;
|
||||
const MAX_TREES = 2500;
|
||||
const P_FOREST = 0.7;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var types = [
|
||||
[[tGrassDForest, tGrass, pForestB], [tGrassDForest, pForestB]],
|
||||
[[tGrassPForest, tGrass, pForestO], [tGrassPForest, pForestO]]
|
||||
];
|
||||
var size = numForest / (scaleByMapSize(3, 6) * numPlayers);
|
||||
var num = Math.floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), numForest / num, 0.5),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
paintClass(clForest)
|
||||
],
|
||||
avoidClasses(
|
||||
clPlayer, 15,
|
||||
clWater, 3,
|
||||
clForest, 16,
|
||||
clHill, 1),
|
||||
num);
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7);
|
||||
createForests(
|
||||
[tGrass, tGrassDForest, tGrassPForest, pForestB, pForestO],
|
||||
avoidClasses(clPlayer, 15, clWater, 3, clForest, 16, clHill, 1),
|
||||
clForest,
|
||||
forestTrees);
|
||||
RMS.SetProgress(70);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
@@ -386,15 +363,11 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(1, 4) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oOak, oBeech];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 3)], true, clForest),
|
||||
0,
|
||||
avoidClasses(clWater, 1, clForest, 7, clHill, 1, clPlayer, 5, clMetal, 6, clRock, 6),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oOak, oBeech],
|
||||
avoidClasses(clWater, 1, clForest, 7, clHill, 1, clPlayer, 5, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
|
||||
@@ -139,12 +139,12 @@ if (randBool())
|
||||
else
|
||||
createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 15), clHill, scaleByMapSize(3, 15));
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
createForests(
|
||||
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
|
||||
avoidClasses(clPlayer, 20, clForest, 18, clHill, 0),
|
||||
clForest,
|
||||
1,
|
||||
...rBiomeTreeCount(1));
|
||||
forestTrees);
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
@@ -237,6 +237,10 @@ createFood
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
createStragglerTrees([oTree1, oTree2, oTree4, oTree3]);
|
||||
createStragglerTrees(
|
||||
[oTree1, oTree2, oTree4, oTree3],
|
||||
avoidClasses(clForest, 8, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
ExportMap();
|
||||
|
||||
@@ -240,43 +240,20 @@ createAreas(
|
||||
);
|
||||
RMS.SetProgress(34);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
if (currentBiome() == "savanna")
|
||||
{
|
||||
var MIN_TREES = 200;
|
||||
var MAX_TREES = 1250;
|
||||
var P_FOREST = 0.02;
|
||||
}
|
||||
else if (currentBiome() == "tropic")
|
||||
{
|
||||
var MIN_TREES = 1000;
|
||||
var MAX_TREES = 6000;
|
||||
var P_FOREST = 0.6;
|
||||
}
|
||||
else
|
||||
{
|
||||
var MIN_TREES = 500;
|
||||
var MAX_TREES = 3000;
|
||||
var P_FOREST = 0.7;
|
||||
}
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
var types = [
|
||||
[[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]],
|
||||
[[tForestFloor1, tMainTerrain, pForest2], [tForestFloor1, pForest2]]
|
||||
];
|
||||
|
||||
var size = numForest / (scaleByMapSize(2,8) * numPlayers) *
|
||||
var size = forestTrees / (scaleByMapSize(2,8) * numPlayers) *
|
||||
(currentBiome() == "savanna" ? 2 : 1);
|
||||
|
||||
var num = floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ClumpPlacer(numForest / num, 0.1, 0.1, 1),
|
||||
new ClumpPlacer(forestTrees / num, 0.1, 0.1, 1),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
paintClass(clForest)
|
||||
@@ -406,15 +383,12 @@ createObjectGroupsDeprecated(
|
||||
);
|
||||
RMS.SetProgress(82);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oTree1, oTree2, oTree4, oTree3];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 3)], true, clForest),
|
||||
0,
|
||||
[avoidClasses(clForest, 1, clHill, 1, clPlayer, 9, clMetal, 6, clRock, 6), stayClasses(clLand, 9)],
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oTree1, oTree2, oTree4, oTree3],
|
||||
[avoidClasses(clForest, 1, clHill, 1, clPlayer, 9, clMetal, 6, clRock, 6), stayClasses(clLand, 9)],
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
RMS.SetProgress(86);
|
||||
|
||||
var planetm = currentBiome() == "tropic" ? 8 : 1;
|
||||
|
||||
@@ -300,18 +300,10 @@ createAreas(
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
const MIN_TREES = 500;
|
||||
const MAX_TREES = 2500;
|
||||
const P_FOREST = 0.5;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.5);
|
||||
var num = scaleByMapSize(10,30);
|
||||
placer = new ClumpPlacer(numForest / num, 0.15, 0.1, 0.5);
|
||||
placer = new ClumpPlacer(forestTrees / num, 0.15, 0.1, 0.5);
|
||||
painter = new TerrainPainter([tSand, pForest]);
|
||||
createAreas(placer, [painter, paintClass(clForest)],
|
||||
avoidClasses(clPlayer, 1, clForest, 10, clHill1, 1),
|
||||
@@ -364,15 +356,11 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oDatePalm, oSDatePalm];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 0)], true),
|
||||
0,
|
||||
avoidClasses(clForest, 0, clHill1, 1, clPlayer, 4, clMetal, 6, clRock, 6),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oDatePalm, oSDatePalm],
|
||||
avoidClasses(clForest, 0, clHill1, 1, clPlayer, 4, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
RMS.SetProgress(90);
|
||||
|
||||
log("Creating bushes...");
|
||||
|
||||
@@ -190,27 +190,19 @@ createAreas(
|
||||
scaleByMapSize(1, 4) * numPlayers
|
||||
);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
var MIN_TREES = 100;
|
||||
var MAX_TREES = 625;
|
||||
var P_FOREST = 0.7;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(100, 625, 0.7);
|
||||
var types = [
|
||||
[[tSnowA, tSnowA, tSnowA, tSnowA, pForestD], [tSnowA, tSnowA, tSnowA, pForestD]],
|
||||
[[tSnowA, tSnowA, tSnowA, tSnowA, pForestS], [tSnowA, tSnowA, tSnowA, pForestS]]
|
||||
];
|
||||
|
||||
var size = numForest / (scaleByMapSize(3,6) * numPlayers);
|
||||
var size = forestTrees / (scaleByMapSize(3,6) * numPlayers);
|
||||
|
||||
var num = floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), numForest / (num * Math.floor(scaleByMapSize(2, 4))), 1),
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), forestTrees / (num * Math.floor(scaleByMapSize(2, 4))), 1),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
paintClass(clForest)
|
||||
@@ -280,15 +272,11 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
RMS.SetProgress(95);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oPine];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 3)], true, clForest),
|
||||
0,
|
||||
avoidClasses(clWater, 5, clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oPine],
|
||||
avoidClasses(clWater, 5, clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating deer...");
|
||||
group = new SimpleGroup(
|
||||
|
||||
@@ -218,21 +218,13 @@ for (let i = 0; i < scaleByMapSize(20, 80); ++i)
|
||||
14);
|
||||
RMS.SetProgress(35);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
const MIN_TREES = 500;
|
||||
const MAX_TREES = 2500;
|
||||
const P_FOREST = 0.7;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7);
|
||||
var types = [
|
||||
[[tDirtMain, tForestFloor, pForestO], [tForestFloor, pForestO]],
|
||||
[[tDirtMain, tForestFloor, pForestO], [tForestFloor, pForestO]]
|
||||
];
|
||||
var size = numForest / (scaleByMapSize(3,6) * numPlayers);
|
||||
var size = forestTrees / (scaleByMapSize(3,6) * numPlayers);
|
||||
var num = floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
@@ -365,25 +357,11 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oOak];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(type, 1, 1, 0, 3)],
|
||||
true,
|
||||
clForest),
|
||||
0,
|
||||
avoidClasses(
|
||||
clForest, 1,
|
||||
clHill, 1,
|
||||
clPlayer, 1,
|
||||
clBaseResource, 6,
|
||||
clMetal, 6,
|
||||
clRock, 6,
|
||||
clCP, 2),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oOak],
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 1, clBaseResource, 6, clMetal, 6, clRock, 6, clCP, 2),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
setSunColor(1.0, 0.796, 0.374);
|
||||
setSunElevation(PI / 6);
|
||||
|
||||
@@ -180,19 +180,11 @@ createAreas(
|
||||
avoidClasses(clPlayer, 20, clForest, 1, clHill, 15, clWater, 0),
|
||||
scaleByMapSize(1, 4) * numPlayers * 3);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
const MIN_TREES = 500;
|
||||
const MAX_TREES = 2500;
|
||||
const P_FOREST = 0.5;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.5);
|
||||
var num = scaleByMapSize(10,42);
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), numForest / (num * Math.floor(scaleByMapSize(2, 5))), 0.5),
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), forestTrees / (num * Math.floor(scaleByMapSize(2, 5))), 0.5),
|
||||
[
|
||||
new TerrainPainter([tForestFloor, pForest]),
|
||||
paintClass(clForest)
|
||||
@@ -347,18 +339,16 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
RMS.SetProgress(90);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oDatePalm, oSDatePalm, oCarob, oFanPalm, oPoplar, oCypress];
|
||||
var stragglerTrees = [
|
||||
[1, avoidClasses(clForest, 0, clWater, 1, clPlayer, 8, clMetal, 6, clHill, 1)],
|
||||
[3, stayClasses(clIsland, 9)]
|
||||
];
|
||||
for (let [amount, constraint] of stragglerTrees)
|
||||
{
|
||||
let num = amount * Math.floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(new SimpleGroup([new SimpleObject(type, 1, 1, 0, 0)], true), 0, constraint, num);
|
||||
}
|
||||
createStragglerTrees(
|
||||
[oDatePalm, oSDatePalm, oCarob, oFanPalm, oPoplar, oCypress],
|
||||
constraint,
|
||||
clForest,
|
||||
amount * stragglerTrees);
|
||||
|
||||
setSkySet("sunny");
|
||||
setSunColor(0.917, 0.828, 0.734);
|
||||
|
||||
@@ -163,25 +163,17 @@ createAreas(
|
||||
stayClasses(clWater, 2),
|
||||
scaleByMapSize(50, 100));
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
const MIN_TREES = 500;
|
||||
const MAX_TREES = 2500;
|
||||
const P_FOREST = 0.7;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7);
|
||||
var types = [
|
||||
[[tForestFloor, tGrass, pForestD], [tForestFloor, pForestD]],
|
||||
[[tForestFloor, tGrass, pForestP], [tForestFloor, pForestP]]
|
||||
];
|
||||
var size = numForest / (scaleByMapSize(3,6) * numPlayers);
|
||||
var size = forestTrees / (scaleByMapSize(3,6) * numPlayers);
|
||||
var num = floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), numForest / (num * Math.floor(scaleByMapSize(2, 4))), 1),
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), forestTrees / (num * Math.floor(scaleByMapSize(2, 4))), 1),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
paintClass(clForest)
|
||||
@@ -304,18 +296,11 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(80);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oOak, oBeech];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(type, 1, 1, 0, 3)],
|
||||
true,
|
||||
clForest),
|
||||
0,
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 13, clMetal, 6, clRock, 6, clWater, 0),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oOak, oBeech],
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 13, clMetal, 6, clRock, 6, clWater, 0),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
|
||||
@@ -252,24 +252,20 @@ createBumps(avoidClasses(clPlayer, 8, clWater, 2), scaleByMapSize(20, 150), 2, 8
|
||||
RMS.SetProgress(50);
|
||||
|
||||
log("Creating forests...");
|
||||
var P_FOREST = 0.7;
|
||||
var totalTrees = scaleByMapSize(1000, 4000);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(1000, 4000, 0.7);
|
||||
var types = [
|
||||
[[tGrass, tGrass, tGrass, tGrass, pForestD], [tGrass, tGrass, tGrass, pForestD]],
|
||||
[[tGrass, tGrass, tGrass, tGrass, pForestP1], [tGrass, tGrass, tGrass, pForestP1]],
|
||||
[[tGrass, tGrass, tGrass, tGrass, pForestP2], [tGrass, tGrass, tGrass, pForestP2]]
|
||||
];
|
||||
var size = numForest / (scaleByMapSize(3, 6) * numPlayers);
|
||||
var size = forestTrees / (scaleByMapSize(3, 6) * numPlayers);
|
||||
var num = Math.floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ChainPlacer(
|
||||
1,
|
||||
Math.floor(scaleByMapSize(3, 5)),
|
||||
numForest / (num * Math.floor(scaleByMapSize(2, 4))),
|
||||
forestTrees / (num * Math.floor(scaleByMapSize(2, 4))),
|
||||
0.5),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
@@ -283,23 +279,20 @@ for (let type of types)
|
||||
clWater, 2),
|
||||
num);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oTree, oPalm1, oPalm2];
|
||||
var num = Math.floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 3)], true, clForest),
|
||||
0,
|
||||
avoidClasses(
|
||||
clWater, 5,
|
||||
clForest, 1,
|
||||
clHill, 1,
|
||||
clPlayer, 8,
|
||||
clBaseResource, 4,
|
||||
clGaia, 1,
|
||||
clMetal, 4,
|
||||
clRock, 4),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oTree, oPalm1, oPalm2],
|
||||
avoidClasses(
|
||||
clWater, 5,
|
||||
clForest, 1,
|
||||
clHill, 1,
|
||||
clPlayer, 8,
|
||||
clBaseResource, 4,
|
||||
clGaia, 1,
|
||||
clMetal, 4,
|
||||
clRock, 4),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
log("Creating grass patches...");
|
||||
|
||||
@@ -302,12 +302,12 @@ if (randBool())
|
||||
else
|
||||
createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 15, clWater, 2), clHill, scaleByMapSize(3, 15));
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
createForests(
|
||||
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
|
||||
avoidClasses(clPlayer, 20, clForest, 17, clHill, 0, clWater, 2),
|
||||
clForest,
|
||||
1,
|
||||
...rBiomeTreeCount(1));
|
||||
forestTrees);
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
@@ -426,7 +426,9 @@ RMS.SetProgress(85);
|
||||
|
||||
createStragglerTrees(
|
||||
[oTree1, oTree2, oTree4, oTree3],
|
||||
avoidClasses(clWater, 5, clForest, 7, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6));
|
||||
avoidClasses(clWater, 5, clForest, 7, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
setWaterWaviness(3.0);
|
||||
setWaterType("lake");
|
||||
|
||||
@@ -2,6 +2,66 @@
|
||||
* @file These functions are often used to place gaia entities, like forests, mines, animals or decorative bushes.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Returns the number of trees in forests and straggler trees.
|
||||
*/
|
||||
function getTreeCounts(minTrees, maxTrees, forestRatio)
|
||||
{
|
||||
return [forestRatio, 1 - forestRatio].map(p => p * scaleByMapSize(minTrees, maxTrees));
|
||||
}
|
||||
|
||||
/**
|
||||
* Places uniformly sized forests at random locations.
|
||||
* Generates two variants of forests from the given terrain textures and tree templates.
|
||||
* The forest border has less trees than the inside.
|
||||
*/
|
||||
function createForests(terrainSet, constraint, tileClass, treeCount)
|
||||
{
|
||||
if (!treeCount)
|
||||
return;
|
||||
|
||||
// Construct different forest types from the terrain textures and template names.
|
||||
let [mainTerrain, terrainForestFloor1, terrainForestFloor2, terrainForestTree1, terrainForestTree2] = terrainSet;
|
||||
|
||||
// The painter will pick a random Terrain for each part of the forest.
|
||||
let forestVariants = [
|
||||
{
|
||||
"borderTerrains": [terrainForestFloor2, mainTerrain, terrainForestTree1],
|
||||
"interiorTerrains": [terrainForestFloor2, terrainForestTree1]
|
||||
},
|
||||
{
|
||||
"borderTerrains": [terrainForestFloor1, mainTerrain, terrainForestTree2],
|
||||
"interiorTerrains": [terrainForestFloor1, terrainForestTree2]
|
||||
}
|
||||
];
|
||||
|
||||
log("Creating forests...");
|
||||
let numberOfForests = Math.floor(treeCount / (scaleByMapSize(3, 6) * getNumPlayers() * forestVariants.length));
|
||||
for (let forestVariant of forestVariants)
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), treeCount / numberOfForests, 0.5),
|
||||
[
|
||||
new LayeredPainter([forestVariant.borderTerrains, forestVariant.interiorTerrains], [2]),
|
||||
paintClass(tileClass)
|
||||
],
|
||||
constraint,
|
||||
numberOfForests);
|
||||
}
|
||||
|
||||
/**
|
||||
* Places the given amount of Entities at random places meeting the given Constraint, chosing a different template for each.
|
||||
*/
|
||||
function createStragglerTrees(templateNames, constraint, tileClass, treeCount)
|
||||
{
|
||||
log("Creating straggler trees...");
|
||||
for (let templateName of templateNames)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(templateName, 1, 1, 0, 3)], true, tileClass),
|
||||
0,
|
||||
constraint,
|
||||
Math.floor(treeCount / templateNames.length));
|
||||
}
|
||||
|
||||
/**
|
||||
* Places a SimpleGroup consisting of the given number of the given Objects
|
||||
* at random locations that meet the given Constraint.
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
var g_numStragglerTrees = 0;
|
||||
|
||||
function createForests(terrainset, constraint, tileclass, numMultiplier = 1, minTrees = 500, maxTrees = 3000, forestProbability = 0.7)
|
||||
{
|
||||
log("Creating forests...");
|
||||
|
||||
tileclass = tileclass || clForest;
|
||||
constraint = constraint || avoidClasses(clPlayer, 20, clForest, 17, clHill, 0);
|
||||
|
||||
var [tM, tFF1, tFF2, tF1, tF2] = terrainset;
|
||||
var totalTrees = scaleByMapSize(minTrees, maxTrees);
|
||||
var numForest = totalTrees * forestProbability;
|
||||
g_numStragglerTrees = totalTrees * (1.0 - forestProbability);
|
||||
|
||||
if (!forestProbability)
|
||||
return;
|
||||
|
||||
log("Creating forests...");
|
||||
|
||||
let types = [
|
||||
[[tFF2, tM, tF1], [tFF2, tF1]],
|
||||
[[tFF1, tM, tF2], [tFF1, tF2]]
|
||||
];
|
||||
|
||||
let num = Math.floor(numForest / (scaleByMapSize(3,6) * numPlayers) / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), numForest / num, 0.5),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
paintClass(tileclass)
|
||||
],
|
||||
constraint,
|
||||
num
|
||||
);
|
||||
}
|
||||
|
||||
function createStragglerTrees(types, constraint, tileclass)
|
||||
{
|
||||
log("Creating straggler trees...");
|
||||
|
||||
constraint = constraint !== undefined ?
|
||||
constraint :
|
||||
avoidClasses(clForest, 8, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6);
|
||||
|
||||
tileclass = tileclass !== undefined ? tileclass : clForest;
|
||||
|
||||
var num = floor(g_numStragglerTrees / types.length);
|
||||
for (var i = 0; i < types.length; ++i)
|
||||
{
|
||||
let group = new SimpleGroup(
|
||||
[new SimpleObject(types[i], 1,1, 0,3)],
|
||||
true, tileclass
|
||||
);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
constraint,
|
||||
num
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -246,16 +246,11 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var num = scaleByMapSize(70, 500);
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBaobab, 1,1, 0,3)],
|
||||
true, clForest
|
||||
);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
createStragglerTrees(
|
||||
[oBaobab],
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clMetal, 6, clRock, 7, clWater, 1),
|
||||
num
|
||||
);
|
||||
clForest,
|
||||
scaleByMapSize(70, 500));
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
|
||||
@@ -251,25 +251,17 @@ createAreas(
|
||||
avoidClasses(clPlayer, 20, clHill, 15, clWater, 3),
|
||||
scaleByMapSize(1, 4) * numPlayers);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
var MIN_TREES = 160;
|
||||
var MAX_TREES = 900;
|
||||
var P_FOREST = 0.02;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(160, 900, 0.02);
|
||||
var types = [
|
||||
[[tForestFloor, tGrass, pForest], [tForestFloor, pForest]]
|
||||
];
|
||||
|
||||
var size = numForest / (0.5 * scaleByMapSize(2,8) * numPlayers);
|
||||
var size = forestTrees / (0.5 * scaleByMapSize(2,8) * numPlayers);
|
||||
var num = floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ClumpPlacer(numForest / num, 0.1, 0.1, 1),
|
||||
new ClumpPlacer(forestTrees / num, 0.1, 0.1, 1),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
paintClass(clForest)
|
||||
@@ -422,15 +414,11 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oBaobab, oBaobab, oBaobab, oFig];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1,1, 0,3)], true, clForest),
|
||||
0,
|
||||
avoidClasses(clWater, 5, clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oBaobab, oBaobab, oBaobab, oFig],
|
||||
avoidClasses(clWater, 5, clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
var planetm = 4;
|
||||
log("Creating small grass tufts...");
|
||||
|
||||
@@ -339,40 +339,18 @@ for (let ix = 0; ix < mapSize; ++ix)
|
||||
}
|
||||
}
|
||||
|
||||
if (currentBiome() == "savanna")
|
||||
{
|
||||
var MIN_TREES = 200;
|
||||
var MAX_TREES = 1250;
|
||||
var P_FOREST = 0.02;
|
||||
}
|
||||
else if (currentBiome() == "tropic")
|
||||
{
|
||||
var MIN_TREES = 1000;
|
||||
var MAX_TREES = 6000;
|
||||
var P_FOREST = 0.6;
|
||||
}
|
||||
else
|
||||
{
|
||||
var MIN_TREES = 500;
|
||||
var MAX_TREES = 3000;
|
||||
var P_FOREST = 0.7;
|
||||
}
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
var types = [
|
||||
[[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]],
|
||||
[[tForestFloor1, tMainTerrain, pForest2], [tForestFloor1, pForest2]]
|
||||
];
|
||||
|
||||
var size = numForest / (scaleByMapSize(2, 8) * numPlayers) * (currentBiome() == "savanna" ? 2 : 1);
|
||||
var size = forestTrees / (scaleByMapSize(2, 8) * numPlayers) * (currentBiome() == "savanna" ? 2 : 1);
|
||||
var num = floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ClumpPlacer(numForest / num, 0.1, 0.1, 1),
|
||||
new ClumpPlacer(forestTrees / num, 0.1, 0.1, 1),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
paintClass(clForest)
|
||||
@@ -479,15 +457,11 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oTree1, oTree2, oTree4, oTree3];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 3)], true, clForest),
|
||||
0,
|
||||
[avoidClasses(clForest, 1, clHill, 1, clPlayer, 9, clMetal, 6, clRock, 6), stayClasses(clLand, 4)],
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oTree1, oTree2, oTree4, oTree3],
|
||||
[avoidClasses(clForest, 1, clHill, 1, clPlayer, 9, clMetal, 6, clRock, 6), stayClasses(clLand, 4)],
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
var planetm = 1;
|
||||
if (currentBiome() == "tropic")
|
||||
|
||||
@@ -163,12 +163,12 @@ RMS.SetProgress(25);
|
||||
|
||||
createBumps(stayClasses(clLand, 5));
|
||||
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
createForests(
|
||||
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
|
||||
[avoidClasses(clPlayer, 20, clForest, 5, clHill, 0, clBaseResource,2, clWomen, 5), stayClasses(clLand, 4)],
|
||||
clForest,
|
||||
1,
|
||||
...rBiomeTreeCount(1));
|
||||
forestTrees);
|
||||
RMS.SetProgress(30);
|
||||
|
||||
if (randBool())
|
||||
@@ -237,9 +237,10 @@ createDecoration(
|
||||
[avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), stayClasses(clLand, 5)]
|
||||
);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
createStragglerTrees(
|
||||
[oTree1, oTree2, oTree4, oTree3],
|
||||
[avoidClasses(clForest, 7, clHill, 1, clPlayer, 9), stayClasses(clLand, 7)]);
|
||||
[avoidClasses(clForest, 7, clHill, 1, clPlayer, 9), stayClasses(clLand, 7)],
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
ExportMap();
|
||||
|
||||
@@ -155,28 +155,20 @@ createAreas(
|
||||
|
||||
RMS.SetProgress(25);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
const MIN_TREES = 400;
|
||||
const MAX_TREES = 2000;
|
||||
const P_FOREST = 0.7;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(400, 2000, 0.7);
|
||||
var types = [
|
||||
[[tMainDirt, tForestFloor2, pForestP], [tForestFloor2, pForestP]],
|
||||
[[tMainDirt, tForestFloor1, pForestT], [tForestFloor1, pForestT]]
|
||||
];
|
||||
var size = numForest / (scaleByMapSize(3,6) * numPlayers);
|
||||
var size = forestTrees / (scaleByMapSize(3,6) * numPlayers);
|
||||
var num = floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ChainPlacer(
|
||||
1,
|
||||
Math.floor(scaleByMapSize(3, 5)),
|
||||
numForest / (num * Math.floor(scaleByMapSize(2, 4))),
|
||||
forestTrees / (num * Math.floor(scaleByMapSize(2, 4))),
|
||||
0.5),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
@@ -280,25 +272,17 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oPalm, oTamarix, oPine];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 3)], true, clForest),
|
||||
0,
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 1, clMetal, 6, clRock, 6),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oPalm, oTamarix, oPine],
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 1, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oPalm, oTamarix, oPine];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1,1, 0,3)], true, clForest),
|
||||
0,
|
||||
[avoidClasses(clForest, 1, clHill, 1, clPlayer, 1, clMetal, 6, clRock, 6), stayClasses(clGrass, 3)],
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oPalm, oTamarix, oPine],
|
||||
[avoidClasses(clForest, 1, clHill, 1, clPlayer, 1, clMetal, 6, clRock, 6), stayClasses(clGrass, 3)],
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
setSkySet("sunny");
|
||||
setSunElevation(PI / 8);
|
||||
|
||||
@@ -256,19 +256,11 @@ createObjectGroupsByAreasDeprecated(
|
||||
|
||||
waterAreas = [];
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
const MIN_TREES = 700;
|
||||
const MAX_TREES = 3500;
|
||||
const P_FOREST = 0.5;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(700, 3500, 0.5);
|
||||
var num = scaleByMapSize(10,30);
|
||||
createAreas(
|
||||
new ClumpPlacer(numForest / num, 0.15, 0.1, 0.5),
|
||||
new ClumpPlacer(forestTrees / num, 0.15, 0.1, 0.5),
|
||||
[
|
||||
new TerrainPainter([pForest, tForestFloor]),
|
||||
paintClass(clForest)
|
||||
@@ -411,34 +403,23 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oDatePalm, oSDatePalm];
|
||||
var num = floor(0.5 * numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 0)], true),
|
||||
0,
|
||||
avoidClasses(clForest, 0, clWater, 1, clPlayer, 20, clMetal, 6, clDesert, 1, clTreasure, 2, clPond, 1),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oDatePalm, oSDatePalm],
|
||||
avoidClasses(clForest, 0, clWater, 1, clPlayer, 20, clMetal, 6, clDesert, 1, clTreasure, 2, clPond, 1),
|
||||
clForest,
|
||||
stragglerTrees / 2);
|
||||
|
||||
var types = [oDatePalm, oSDatePalm];
|
||||
var num = floor(0.1 * numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1,1, 0,0)], true),
|
||||
0,
|
||||
avoidClasses(clForest, 0, clWater, 1, clPlayer, 20, clMetal, 6, clTreasure, 2),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oDatePalm, oSDatePalm],
|
||||
avoidClasses(clForest, 0, clWater, 1, clPlayer, 20, clMetal, 6, clTreasure, 2),
|
||||
clForest,
|
||||
stragglerTrees / 10);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oDatePalm, oSDatePalm];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 0)], true),
|
||||
0,
|
||||
borderClasses(clPond, 1, 4),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oDatePalm, oSDatePalm],
|
||||
borderClasses(clPond, 1, 4),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating obelisks");
|
||||
group = new SimpleGroup(
|
||||
|
||||
@@ -119,25 +119,17 @@ createAreas(
|
||||
scaleByMapSize(2, 8) * numPlayers
|
||||
);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
var MIN_TREES = 200;
|
||||
var MAX_TREES = 1250;
|
||||
var P_FOREST = 0.7;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
log("Creating forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(200, 1250, 0.7);
|
||||
var types = [
|
||||
[[tGrassB, tGrassA, pForestD], [tGrassB, pForestD]],
|
||||
[[tGrassB, tGrassA, pForestP], [tGrassB, pForestP]]
|
||||
];
|
||||
var size = numForest / (scaleByMapSize(2,8) * numPlayers);
|
||||
var size = forestTrees / (scaleByMapSize(2,8) * numPlayers);
|
||||
var num = floor(size / types.length);
|
||||
for (let type of types)
|
||||
createAreas(
|
||||
new ClumpPlacer(numForest / num, 0.1, 0.1, 1),
|
||||
new ClumpPlacer(forestTrees / num, 0.1, 0.1, 1),
|
||||
[
|
||||
new LayeredPainter(type, [2]),
|
||||
paintClass(clForest)
|
||||
@@ -226,14 +218,10 @@ createObjectGroupsDeprecated(
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
var types = [oTree];
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(type, 1, 1, 0, 3)], true, clForest),
|
||||
0,
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6, clBaseResource, 6),
|
||||
num);
|
||||
createStragglerTrees(
|
||||
[oTree],
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6, clBaseResource, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
ExportMap();
|
||||
|
||||
Reference in New Issue
Block a user