WIP: Completing the unified random map syntax.

This was SVN commit r14621.
This commit is contained in:
O.Davoodi 2014-01-19 11:58:24 +00:00
parent d06ab6514b
commit 6036b48c1d
3 changed files with 194 additions and 167 deletions

View File

@ -214,210 +214,121 @@ for (var i = 0; i < numPlayers; i++)
RMS.SetProgress(20);
// create bumps
createBumps()
createBumps();
// create hills
if (randInt(1,2) == 1)
createHills([tMainTerrain, tCliff, tHill], clHill, avoidClasses(clPlayer, 20, clHill, 15), scaleByMapSize(3, 15))
createHills([tMainTerrain, tCliff, tHill], avoidClasses(clPlayer, 20, clHill, 15), clHill, scaleByMapSize(3, 15));
else
createMountains(tCliff, clHill, avoidClasses(clPlayer, 20, clHill, 15), scaleByMapSize(3, 15))
createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 15), clHill, scaleByMapSize(3, 15));
// create forests
createForests([tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2], clForest, avoidClasses(clPlayer, 20, clForest, 18, clHill, 0), 1.0, random_terrain)
createForests(
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
avoidClasses(clPlayer, 20, clForest, 18, clHill, 0),
clForest,
1.0,
random_terrain
);
RMS.SetProgress(50);
// create dirt patches
log("Creating dirt patches...");
var sizes = [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)];
for (var i = 0; i < sizes.length; i++)
{
placer = new ChainPlacer(1, floor(scaleByMapSize(3, 5)), sizes[i], 0.5);
painter = new LayeredPainter(
[[tMainTerrain,tTier1Terrain],[tTier1Terrain,tTier2Terrain], [tTier2Terrain,tTier3Terrain]], // terrains
[1,1] // widths
);
createAreas(
placer,
[painter, paintClass(clDirt)],
avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
scaleByMapSize(15, 45)
);
}
createLayeredPatches(
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
[[tMainTerrain,tTier1Terrain],[tTier1Terrain,tTier2Terrain], [tTier2Terrain,tTier3Terrain]],
[1,1]
);
// create grass patches
log("Creating grass patches...");
var sizes = [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)];
for (var i = 0; i < sizes.length; i++)
{
placer = new ChainPlacer(1, floor(scaleByMapSize(3, 5)), sizes[i], 0.5);
painter = new TerrainPainter(tTie4Terrain);
createAreas(
placer,
painter,
avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
scaleByMapSize(15, 45)
);
}
createPatches(
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
tTie4Terrain
);
RMS.SetProgress(55);
log("Creating stone mines...");
// create large stone quarries
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
createObjectGroups(group, 0,
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
scaleByMapSize(4,16), 100
);
// create small stone quarries
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
createObjectGroups(group, 0,
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
scaleByMapSize(4,16), 100
);
// create stone quarries
createMines(
[
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
[new SimpleObject(oStoneSmall, 2,5, 1,3)]
]
)
log("Creating metal mines...");
// create large metal quarries
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
createObjectGroups(group, 0,
avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1),
scaleByMapSize(4,16), 100
);
createMines(
[
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
],
avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1),
clMetal
)
RMS.SetProgress(65);
// create small decorative rocks
log("Creating small decorative rocks...");
group = new SimpleGroup(
[new SimpleObject(aRockMedium, 1,3, 0,1)],
true
);
createObjectGroups(
group, 0,
avoidClasses(clForest, 0, clPlayer, 0, clHill, 0),
scaleByMapSize(16, 262), 50
);
// create decoration
var planetm = 1;
if (random_terrain==7)
planetm = 8;
// create large decorative rocks
log("Creating large decorative rocks...");
group = new SimpleGroup(
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
true
);
createObjectGroups(
group, 0,
avoidClasses(clForest, 0, clPlayer, 0, clHill, 0),
scaleByMapSize(8, 131), 50
createDecoration
(
[[new SimpleObject(aRockMedium, 1,3, 0,1)],
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
[new SimpleObject(aGrassShort, 1,2, 0,1, -PI/8,PI/8)],
[new SimpleObject(aGrass, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -PI/8,PI/8)],
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
],
[
scaleByMapSize(16, 262),
scaleByMapSize(8, 131),
planetm * scaleByMapSize(13, 200),
planetm * scaleByMapSize(13, 200),
planetm * scaleByMapSize(13, 200)
]
);
RMS.SetProgress(70);
// create deer
log("Creating deer...");
group = new SimpleGroup(
[new SimpleObject(oMainHuntableAnimal, 5,7, 0,4)],
true, clFood
);
createObjectGroups(group, 0,
avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 20),
3 * numPlayers, 50
// create animals
createFood
(
[
[new SimpleObject(oMainHuntableAnimal, 5,7, 0,4)],
[new SimpleObject(oSecondaryHuntableAnimal, 2,3, 0,2)]
],
[
3 * numPlayers,
3 * numPlayers
]
);
RMS.SetProgress(75);
// create fruits
log("Creating fruits...");
group = new SimpleGroup(
[new SimpleObject(oFruitBush, 5,7, 0,4)],
true, clFood
);
createObjectGroups(group, 0,
avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 10),
3 * numPlayers, 50
);
// create sheep
log("Creating sheep...");
group = new SimpleGroup(
[new SimpleObject(oSecondaryHuntableAnimal, 2,3, 0,2)],
true, clFood
);
createObjectGroups(group, 0,
avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 20),
3 * numPlayers, 50
createFood
(
[
[new SimpleObject(oFruitBush, 5,7, 0,4)]
],
[
3 * numPlayers
],
avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 10)
);
RMS.SetProgress(85);
// create straggler trees
log("Creating straggler trees...");
var types = [oTree1, oTree2, oTree4, oTree3]; // some variation
var num = floor(g_numStragglerTrees / types.length);
for (var i = 0; i < types.length; ++i)
{
group = new SimpleGroup(
[new SimpleObject(types[i], 1,1, 0,3)],
true, clForest
);
createObjectGroups(group, 0,
avoidClasses(clForest, 8, clHill, 1, clPlayer, 12, clMetal, 1, clRock, 1),
num
);
}
var planetm = 1;
if (random_terrain==7)
{
planetm = 8;
}
//create small grass tufts
log("Creating small grass tufts...");
group = new SimpleGroup(
[new SimpleObject(aGrassShort, 1,2, 0,1, -PI/8,PI/8)]
);
createObjectGroups(group, 0,
avoidClasses(clHill, 2, clPlayer, 2, clDirt, 0),
planetm * scaleByMapSize(13, 200)
);
RMS.SetProgress(90);
// create large grass tufts
log("Creating large grass tufts...");
group = new SimpleGroup(
[new SimpleObject(aGrass, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -PI/8,PI/8)]
);
createObjectGroups(group, 0,
avoidClasses(clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0),
planetm * scaleByMapSize(13, 200)
);
RMS.SetProgress(95);
// create bushes
log("Creating bushes...");
group = new SimpleGroup(
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
);
createObjectGroups(group, 0,
avoidClasses(clHill, 1, clPlayer, 1, clDirt, 1),
planetm * scaleByMapSize(13, 200), 50
);
random_terrain = randInt(1,3)
if (random_terrain==1){
setSkySet("cirrus");
}
else if (random_terrain ==2){
setSkySet("cumulus");
}
else if (random_terrain ==3){
setSkySet("sunny");
}
setSunRotation(randFloat(0, TWO_PI));
setSunElevation(randFloat(PI/ 5, PI / 3));
createStragglerTrees(types);
// Export map data

File diff suppressed because one or more lines are too long

View File

@ -21,7 +21,7 @@ function createBumps(constraint, count, minsize, maxsize, spread, failfraction,
);
}
function createHills(terrainset, tileclass, constraint, count, minsize, maxsize, spread, failfraction, elevation, elevationsmooth)
function createHills(terrainset, constraint, tileclass, count, minsize, maxsize, spread, failfraction, elevation, elevationsmooth)
{
log("Creating hills...");
@ -49,7 +49,7 @@ function createHills(terrainset, tileclass, constraint, count, minsize, maxsize,
);
}
function createMountains(terrain, tileclass, constraint, count, maxHeight, minRadius, maxRadius, numCircles)
function createMountains(terrain, constraint, tileclass, count, maxHeight, minRadius, maxRadius, numCircles)
{
log("Creating mountains...");
@ -80,7 +80,7 @@ function createMountains(terrain, tileclass, constraint, count, maxHeight, minRa
}
}
function createForests(terrainset, tileclass, constraint, numMultiplier, biomeID)
function createForests(terrainset, constraint, tileclass, numMultiplier, biomeID)
{
log("Creating forests...");
@ -143,4 +143,120 @@ function createForests(terrainset, tileclass, constraint, numMultiplier, biomeID
);
}
}
}
function createLayeredPatches(sizes, terrainset, twidthset, constraint, count, tileclass, failfraction)
{
tileclass = (tileclass !== undefined ? tileclass : clDirt);
constraint = (constraint !== undefined ? constraint : avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12));
count = (count !== undefined ? count : scaleByMapSize(15, 45));
failfraction = (failfraction !== undefined ? failfraction : 0.5);
for (var i = 0; i < sizes.length; i++)
{
var placer = new ChainPlacer(1, floor(scaleByMapSize(3, 5)), sizes[i], failfraction);
var painter = new LayeredPainter(
terrainset, // terrains
twidthset // widths
);
createAreas(
placer,
[painter, paintClass(tileclass)],
constraint,
count
);
}
}
function createPatches(sizes, terrain, constraint, count, tileclass, failfraction)
{
tileclass = (tileclass !== undefined ? tileclass : clDirt);
constraint = (constraint !== undefined ? constraint : avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12));
count = (count !== undefined ? count : scaleByMapSize(15, 45));
failfraction = (failfraction !== undefined ? failfraction : 0.5);
for (var i = 0; i < sizes.length; i++)
{
var placer = new ChainPlacer(1, floor(scaleByMapSize(3, 5)), sizes[i], failfraction);
var painter = new TerrainPainter(terrain)
createAreas(
placer,
[painter, paintClass(tileclass)],
constraint,
count
);
}
}
function createMines(mines, constraint, tileclass, count)
{
tileclass = (tileclass !== undefined ? tileclass : clRock);
constraint = (constraint !== undefined ? constraint : avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clHill, 1));
count = (count !== undefined ? count : scaleByMapSize(4,16));
for (var i = 0; i < mines.length; ++i)
{
var group = new SimpleGroup(mines[i], true, tileclass);
createObjectGroups(group, 0,
constraint,
count, 70
);
}
}
function createDecoration(objects, counts, constraint)
{
log("Creating decoration...");
constraint = (constraint !== undefined ? constraint : avoidClasses(clForest, 0, clPlayer, 0, clHill, 0));
for (var i = 0; i < objects.length; ++i)
{
var group = new SimpleGroup(
objects[i],
true
);
createObjectGroups(
group, 0,
constraint,
counts[i], 5
);
}
}
function createFood(objects, counts, constraint, tileclass)
{
log("Creating food...");
constraint = (constraint !== undefined ? constraint : avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 20));
tileclass = (tileclass !== undefined ? tileclass : clFood);
for (var i = 0; i < objects.length; ++i)
{
var group = new SimpleGroup(
objects[i],
true, tileclass
);
createObjectGroups(
group, 0,
constraint,
counts[i], 50
);
}
}
function createStragglerTrees(types, constraint, tileclass)
{
log("Creating straggler trees...");
constraint = (constraint !== undefined ? constraint : avoidClasses(clForest, 8, clHill, 1, clPlayer, 12, clMetal, 1, clRock, 1));
tileclass = (tileclass !== undefined ? tileclass : clForest);
var num = floor(g_numStragglerTrees / types.length);
for (var i = 0; i < types.length; ++i)
{
group = new SimpleGroup(
[new SimpleObject(types[i], 1,1, 0,3)],
true, tileclass
);
createObjectGroups(group, 0,
constraint,
num
);
}
}