forked from 0ad/0ad
Updating random biome system to include autumn textures. adding another theme to "unknown".
This was SVN commit r12546.
This commit is contained in:
parent
0d0bc32736
commit
776282b59d
File diff suppressed because one or more lines are too long
@ -86,9 +86,8 @@ for (var ix = 0; ix < mapSize; ix++)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var md = randInt(1,12);
|
var md = randInt(1,13);
|
||||||
var needsAdditionalWood = false;
|
var needsAdditionalWood = false;
|
||||||
|
|
||||||
//*****************************************************************************************************************************
|
//*****************************************************************************************************************************
|
||||||
if (md == 1) //archipelago and island
|
if (md == 1) //archipelago and island
|
||||||
{
|
{
|
||||||
@ -1265,51 +1264,197 @@ else if (md == 9) //passes
|
|||||||
setHeight(ix, iz, 3);
|
setHeight(ix, iz, 3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//create ranges
|
|
||||||
log ("Creating ranges...");
|
|
||||||
for (var m = 0; m < numPlayers; m++)
|
|
||||||
{
|
|
||||||
var tang = startAngle + (m+0.5)*TWO_PI/(numPlayers);
|
|
||||||
var placer = new PathPlacer(fractionToTiles(0.5), fractionToTiles(0.5), fractionToTiles(0.5 + 0.49*cos(tang)), fractionToTiles(0.5 + 0.49*sin(tang)), scaleByMapSize(14,24), 0.4, 3*(scaleByMapSize(1,3)), 0.2, 0.05);
|
|
||||||
var terrainPainter = new LayeredPainter(
|
|
||||||
[tShore, tWater, tWater], // terrains
|
|
||||||
[1, 3] // widths
|
|
||||||
);
|
|
||||||
var elevationPainter = new SmoothElevationPainter(
|
|
||||||
ELEVATION_SET, // type
|
|
||||||
24, // elevation
|
|
||||||
3 // blend radius
|
|
||||||
);
|
|
||||||
createArea(placer, [terrainPainter, elevationPainter, paintClass(clWater)], avoidClasses(clPlayer, 5));
|
|
||||||
placer = new ClumpPlacer(floor(PI*scaleByMapSize(10,50)*scaleByMapSize(10,50)/5), 0.95, 0.6, 10, fractionToTiles(0.5 + 0.49*cos(tang)), fractionToTiles(0.5 + 0.49*sin(tang)));
|
|
||||||
var painter = new LayeredPainter([tWater, tWater], [1]);
|
|
||||||
var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 24, 0);
|
|
||||||
createArea(placer, [painter, elevationPainter], avoidClasses(clPlayer, 5));
|
|
||||||
|
|
||||||
var placer = new PathPlacer(fractionToTiles(0.5 + 0.3*cos(tang) - 0.1 * cos(tang+PI/2)), fractionToTiles(0.5 + 0.3*sin(tang) - 0.1 * sin(tang+PI/2)), fractionToTiles(0.5 + 0.3*cos(tang) + 0.1 * cos(tang+PI/2)), fractionToTiles(0.5 + 0.3*sin(tang) + 0.1 * sin(tang+PI/2)), scaleByMapSize(14,24), 0.4, 3*(scaleByMapSize(1,3)), 0.2, 0.05);
|
|
||||||
var painter = new LayeredPainter([tCliff, tCliff], [1]);
|
|
||||||
var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 3, 2);
|
|
||||||
createArea(placer, [painter, elevationPainter], null);
|
|
||||||
}
|
|
||||||
|
|
||||||
var fx = fractionToTiles(0.5);
|
|
||||||
var fz = fractionToTiles(0.5);
|
|
||||||
ix = round(fx);
|
|
||||||
iz = round(fz);
|
|
||||||
|
|
||||||
var placer = new ClumpPlacer(mapArea * 0.005, 0.7, 0.1, 10, ix, iz);
|
|
||||||
var terrainPainter = new LayeredPainter(
|
|
||||||
[tShore, tWater, tWater, tWater], // terrains
|
|
||||||
[1, 4, 2] // widths
|
|
||||||
);
|
|
||||||
var elevationPainter = new SmoothElevationPainter(
|
|
||||||
ELEVATION_SET, // type
|
|
||||||
24, // elevation
|
|
||||||
4 // blend radius
|
|
||||||
);
|
|
||||||
createArea(placer, [terrainPainter, elevationPainter, paintClass(clWater)], null);
|
|
||||||
|
|
||||||
|
//create ranges
|
||||||
|
log ("Creating ranges...");
|
||||||
|
for (var m = 0; m < numPlayers; m++)
|
||||||
|
{
|
||||||
|
var tang = startAngle + (m+0.5)*TWO_PI/(numPlayers);
|
||||||
|
var placer = new PathPlacer(fractionToTiles(0.5), fractionToTiles(0.5), fractionToTiles(0.5 + 0.49*cos(tang)), fractionToTiles(0.5 + 0.49*sin(tang)), scaleByMapSize(14,24), 0.4, 3*(scaleByMapSize(1,3)), 0.2, 0.05);
|
||||||
|
var terrainPainter = new LayeredPainter(
|
||||||
|
[tShore, tWater, tWater], // terrains
|
||||||
|
[1, 3] // widths
|
||||||
|
);
|
||||||
|
var elevationPainter = new SmoothElevationPainter(
|
||||||
|
ELEVATION_SET, // type
|
||||||
|
24, // elevation
|
||||||
|
3 // blend radius
|
||||||
|
);
|
||||||
|
createArea(placer, [terrainPainter, elevationPainter, paintClass(clWater)], avoidClasses(clPlayer, 5));
|
||||||
|
placer = new ClumpPlacer(floor(PI*scaleByMapSize(10,50)*scaleByMapSize(10,50)/5), 0.95, 0.6, 10, fractionToTiles(0.5 + 0.49*cos(tang)), fractionToTiles(0.5 + 0.49*sin(tang)));
|
||||||
|
var painter = new LayeredPainter([tWater, tWater], [1]);
|
||||||
|
var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 24, 0);
|
||||||
|
createArea(placer, [painter, elevationPainter], avoidClasses(clPlayer, 5));
|
||||||
|
|
||||||
|
var placer = new PathPlacer(fractionToTiles(0.5 + 0.3*cos(tang) - 0.1 * cos(tang+PI/2)), fractionToTiles(0.5 + 0.3*sin(tang) - 0.1 * sin(tang+PI/2)), fractionToTiles(0.5 + 0.3*cos(tang) + 0.1 * cos(tang+PI/2)), fractionToTiles(0.5 + 0.3*sin(tang) + 0.1 * sin(tang+PI/2)), scaleByMapSize(14,24), 0.4, 3*(scaleByMapSize(1,3)), 0.2, 0.05);
|
||||||
|
var painter = new LayeredPainter([tCliff, tCliff], [1]);
|
||||||
|
var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 3, 2);
|
||||||
|
createArea(placer, [painter, elevationPainter], null);
|
||||||
|
}
|
||||||
|
var mdd1 = randInt (1,3);
|
||||||
|
if (mdd1 <= 2)
|
||||||
|
{
|
||||||
|
var fx = fractionToTiles(0.5);
|
||||||
|
var fz = fractionToTiles(0.5);
|
||||||
|
ix = round(fx);
|
||||||
|
iz = round(fz);
|
||||||
|
|
||||||
|
var placer = new ClumpPlacer(mapArea * 0.005, 0.7, 0.1, 10, ix, iz);
|
||||||
|
var terrainPainter = new LayeredPainter(
|
||||||
|
[tShore, tWater, tWater, tWater], // terrains
|
||||||
|
[1, 4, 2] // widths
|
||||||
|
);
|
||||||
|
var elevationPainter = new SmoothElevationPainter(
|
||||||
|
ELEVATION_SET, // type
|
||||||
|
24, // elevation
|
||||||
|
4 // blend radius
|
||||||
|
);
|
||||||
|
createArea(placer, [terrainPainter, elevationPainter, paintClass(clWater)], null);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var fx = fractionToTiles(0.5);
|
||||||
|
var fz = fractionToTiles(0.5);
|
||||||
|
ix = round(fx);
|
||||||
|
iz = round(fz);
|
||||||
|
|
||||||
|
var lSize = sqrt(sqrt(sqrt(scaleByMapSize(1, 6))));
|
||||||
|
|
||||||
|
var placer = new ClumpPlacer(mapArea * 0.03 * lSize, 0.7, 0.1, 10, ix, iz);
|
||||||
|
var terrainPainter = new LayeredPainter(
|
||||||
|
[tShore, tWater, tWater, tWater], // terrains
|
||||||
|
[1, 4, 2] // widths
|
||||||
|
);
|
||||||
|
var elevationPainter = new SmoothElevationPainter(
|
||||||
|
ELEVATION_SET, // type
|
||||||
|
-4, // elevation
|
||||||
|
3 // blend radius
|
||||||
|
);
|
||||||
|
createArea(placer, [terrainPainter, elevationPainter, paintClass(clWater)], null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//********************************************************************************************************
|
||||||
|
else if (md == 10) //lowlands
|
||||||
|
{
|
||||||
|
// randomize player order
|
||||||
|
var playerIDs = [];
|
||||||
|
for (var i = 0; i < numPlayers; i++)
|
||||||
|
{
|
||||||
|
playerIDs.push(i+1);
|
||||||
|
}
|
||||||
|
playerIDs = sortPlayers(playerIDs);
|
||||||
|
|
||||||
|
// place players
|
||||||
|
|
||||||
|
var playerX = new Array(numPlayers);
|
||||||
|
var playerZ = new Array(numPlayers);
|
||||||
|
var playerAngle = new Array(numPlayers);
|
||||||
|
|
||||||
|
var startAngle = randFloat(0, TWO_PI);
|
||||||
|
for (var i = 0; i < numPlayers; i++)
|
||||||
|
{
|
||||||
|
playerAngle[i] = startAngle + i*TWO_PI/numPlayers;
|
||||||
|
playerX[i] = 0.5 + 0.35*cos(playerAngle[i]);
|
||||||
|
playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var ix = 0; ix < mapSize; ix++)
|
||||||
|
{
|
||||||
|
for (var iz = 0; iz < mapSize; iz++)
|
||||||
|
{
|
||||||
|
var x = ix / (mapSize + 1.0);
|
||||||
|
var z = iz / (mapSize + 1.0);
|
||||||
|
setHeight(ix, iz, 30);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var radius = scaleByMapSize(18,32);
|
||||||
|
var cliffRadius = 2;
|
||||||
|
var elevation = 20;
|
||||||
|
var hillSize = PI * radius * radius;
|
||||||
|
|
||||||
|
var split = 1;
|
||||||
|
if ((mapSize / 64 == 2)&&(numPlayers <= 2))
|
||||||
|
{
|
||||||
|
split = 2;
|
||||||
|
}
|
||||||
|
else if ((mapSize / 64 == 3)&&(numPlayers <= 3))
|
||||||
|
{
|
||||||
|
split = 2;
|
||||||
|
}
|
||||||
|
else if ((mapSize / 64 == 4)&&(numPlayers <= 4))
|
||||||
|
{
|
||||||
|
split = 2;
|
||||||
|
}
|
||||||
|
else if ((mapSize / 64 == 5)&&(numPlayers <= 4))
|
||||||
|
{
|
||||||
|
split = 2;
|
||||||
|
}
|
||||||
|
else if ((mapSize / 64 == 6)&&(numPlayers <= 5))
|
||||||
|
{
|
||||||
|
split = 2;
|
||||||
|
}
|
||||||
|
else if ((mapSize / 64 == 7)&&(numPlayers <= 6))
|
||||||
|
{
|
||||||
|
split = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < numPlayers*split; i++)
|
||||||
|
{
|
||||||
|
var tang = startAngle + (i)*TWO_PI/(numPlayers*split);
|
||||||
|
var fx = fractionToTiles(0.5 + 0.35*cos(tang));
|
||||||
|
var fz = fractionToTiles(0.5 + 0.35*sin(tang));
|
||||||
|
var ix = round(fx);
|
||||||
|
var iz = round(fz);
|
||||||
|
// create the hill
|
||||||
|
var placer = new ClumpPlacer(hillSize, 0.65, 0.1, 10, ix, iz);
|
||||||
|
var terrainPainter = new LayeredPainter(
|
||||||
|
[tGrass, tGrass], // terrains
|
||||||
|
[cliffRadius] // widths
|
||||||
|
);
|
||||||
|
var elevationPainter = new SmoothElevationPainter(
|
||||||
|
ELEVATION_SET, // type
|
||||||
|
3, // elevation
|
||||||
|
cliffRadius // blend radius
|
||||||
|
);
|
||||||
|
createArea(placer, [terrainPainter, elevationPainter, paintClass(clLand)], null);
|
||||||
|
}
|
||||||
|
|
||||||
|
var fx = fractionToTiles(0.5);
|
||||||
|
var fz = fractionToTiles(0.5);
|
||||||
|
ix = round(fx);
|
||||||
|
iz = round(fz);
|
||||||
|
|
||||||
|
var lSize = sqrt(sqrt(sqrt(scaleByMapSize(1, 6))));
|
||||||
|
|
||||||
|
var placer = new ClumpPlacer(mapArea * 0.091 * lSize, 0.7, 0.1, 10, ix, iz);
|
||||||
|
var terrainPainter = new LayeredPainter(
|
||||||
|
[tGrass, tGrass, tGrass, tGrass], // terrains
|
||||||
|
[1, 4, 2] // widths
|
||||||
|
);
|
||||||
|
var elevationPainter = new SmoothElevationPainter(
|
||||||
|
ELEVATION_SET, // type
|
||||||
|
3, // elevation
|
||||||
|
4 // blend radius
|
||||||
|
);
|
||||||
|
createArea(placer, [terrainPainter, elevationPainter, paintClass(clWater)], null);
|
||||||
|
|
||||||
|
for (var m = 0; m < numPlayers*split; m++)
|
||||||
|
{
|
||||||
|
var tang = startAngle + m*TWO_PI/(numPlayers*split);
|
||||||
|
var placer = new PathPlacer(fractionToTiles(0.5), fractionToTiles(0.5), fractionToTiles(0.5 + 0.35*cos(tang)), fractionToTiles(0.5 + 0.35*sin(tang)), scaleByMapSize(14,24), 0.4, 3*(scaleByMapSize(1,3)), 0.2, 0.05);
|
||||||
|
var terrainPainter = new LayeredPainter(
|
||||||
|
[tGrass, tGrass, tGrass], // terrains
|
||||||
|
[1, 3] // widths
|
||||||
|
);
|
||||||
|
var elevationPainter = new SmoothElevationPainter(
|
||||||
|
ELEVATION_SET, // type
|
||||||
|
3, // elevation
|
||||||
|
4 // blend radius
|
||||||
|
);
|
||||||
|
createArea(placer, [terrainPainter, elevationPainter, paintClass(clWater)], null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//********************************************************************************************************
|
//********************************************************************************************************
|
||||||
else //mainland
|
else //mainland
|
||||||
@ -1349,15 +1494,16 @@ else //mainland
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
paintTerrainBasedOnHeight(3.12, 40, 1, tCliff);
|
paintTerrainBasedOnHeight(3.12, 30, 1, tCliff);
|
||||||
paintTerrainBasedOnHeight(3, 3.12, 1, tGrass);
|
paintTerrainBasedOnHeight(3, 3.12, 1, tGrass);
|
||||||
paintTerrainBasedOnHeight(1, 3, 1, tShore);
|
paintTerrainBasedOnHeight(1, 3, 1, tShore);
|
||||||
paintTerrainBasedOnHeight(-8, 1, 2, tWater);
|
paintTerrainBasedOnHeight(-8, 1, 2, tWater);
|
||||||
unPaintTileClassBasedOnHeight(0, 3.12, 1, clWater)
|
unPaintTileClassBasedOnHeight(0, 3.12, 1, clWater);
|
||||||
unPaintTileClassBasedOnHeight(-6, 0, 1, clLand)
|
unPaintTileClassBasedOnHeight(-6, 0, 1, clLand);
|
||||||
paintTileClassBasedOnHeight(-6, 0, 1, clWater)
|
paintTileClassBasedOnHeight(-6, 0, 1, clWater);
|
||||||
paintTileClassBasedOnHeight(0, 3.12, 1, clLand)
|
paintTileClassBasedOnHeight(0, 3.12, 1, clLand);
|
||||||
paintTileClassBasedOnHeight(3.12, 40, 1, clHill)
|
paintTileClassBasedOnHeight(3.12, 30, 1, clHill);
|
||||||
|
paintTileClassBasedOnHeight(3.12, 28, 1, clHill);
|
||||||
|
|
||||||
for (var i = 0; i < numPlayers; i++)
|
for (var i = 0; i < numPlayers; i++)
|
||||||
{
|
{
|
||||||
@ -1515,19 +1661,19 @@ if (rt == 6)
|
|||||||
{
|
{
|
||||||
var MIN_TREES = floor(200*multiplier);
|
var MIN_TREES = floor(200*multiplier);
|
||||||
var MAX_TREES = floor(1250*multiplier);
|
var MAX_TREES = floor(1250*multiplier);
|
||||||
var P_FOREST = 0.02;
|
var P_FOREST = randFloat(0.02, 0.05);
|
||||||
}
|
}
|
||||||
else if (rt == 7)
|
else if (rt == 7)
|
||||||
{
|
{
|
||||||
var MIN_TREES = floor(1000*multiplier);
|
var MIN_TREES = floor(1000*multiplier);
|
||||||
var MAX_TREES = floor(6000*multiplier);
|
var MAX_TREES = floor(6000*multiplier);
|
||||||
var P_FOREST = 0.6;
|
var P_FOREST = randFloat(0.5, 0.7);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var MIN_TREES = floor(500*multiplier);
|
var MIN_TREES = floor(500*multiplier);
|
||||||
var MAX_TREES = floor(3000*multiplier);
|
var MAX_TREES = floor(3000*multiplier);
|
||||||
var P_FOREST = 0.7;
|
var P_FOREST = randFloat(0.5,0.8);
|
||||||
}
|
}
|
||||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||||
var numForest = totalTrees * P_FOREST;
|
var numForest = totalTrees * P_FOREST;
|
||||||
@ -1608,14 +1754,14 @@ log("Creating stone mines...");
|
|||||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||||
createObjectGroups(group, 0,
|
createObjectGroups(group, 0,
|
||||||
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1), stayClasses(clLand, 3)],
|
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1), stayClasses(clLand, 3)],
|
||||||
randInt(scaleByMapSize(4,16),scaleByMapSize(9,40)), 100
|
randInt(scaleByMapSize(2,9),scaleByMapSize(9,40)), 100
|
||||||
);
|
);
|
||||||
|
|
||||||
// create small stone quarries
|
// create small stone quarries
|
||||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||||
createObjectGroups(group, 0,
|
createObjectGroups(group, 0,
|
||||||
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1), stayClasses(clLand, 3)],
|
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1), stayClasses(clLand, 3)],
|
||||||
randInt(scaleByMapSize(4,16),scaleByMapSize(9,40)), 100
|
randInt(scaleByMapSize(2,9),scaleByMapSize(9,40)), 100
|
||||||
);
|
);
|
||||||
|
|
||||||
log("Creating metal mines...");
|
log("Creating metal mines...");
|
||||||
@ -1623,7 +1769,7 @@ log("Creating metal mines...");
|
|||||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||||
createObjectGroups(group, 0,
|
createObjectGroups(group, 0,
|
||||||
[avoidClasses(clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5, clHill, 1), stayClasses(clLand, 3)],
|
[avoidClasses(clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5, clHill, 1), stayClasses(clLand, 3)],
|
||||||
randInt(scaleByMapSize(4,16),scaleByMapSize(9,40)), 100
|
randInt(scaleByMapSize(2,9),scaleByMapSize(9,40)), 100
|
||||||
);
|
);
|
||||||
|
|
||||||
RMS.SetProgress(65);
|
RMS.SetProgress(65);
|
||||||
|
Loading…
Reference in New Issue
Block a user