forked from 0ad/0ad
Tweaks resources in all random maps.
Updates progress steps for random maps. Latium is not circular, so explicitly set that. Fixes some weirdness with Atlas random map generation. This was SVN commit r9470.
This commit is contained in:
parent
f6ffe7f121
commit
0fc0335285
@ -237,7 +237,7 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
}
|
||||
|
||||
RMS.SetProgress(5);
|
||||
RMS.SetProgress(10);
|
||||
|
||||
// create lakes
|
||||
log("Creating lakes...");
|
||||
@ -255,6 +255,8 @@ var waterAreas = createAreas(
|
||||
numLakes
|
||||
);
|
||||
|
||||
RMS.SetProgress(15);
|
||||
|
||||
// create reeds
|
||||
log("Creating reeds...");
|
||||
group = new SimpleGroup(
|
||||
@ -266,6 +268,8 @@ createObjectGroupsByAreas(group, 0,
|
||||
waterAreas
|
||||
);
|
||||
|
||||
RMS.SetProgress(20);
|
||||
|
||||
// create fish
|
||||
log("Creating fish...");
|
||||
group = new SimpleGroup(
|
||||
@ -279,7 +283,7 @@ createObjectGroupsByAreas(group, 0,
|
||||
);
|
||||
waterAreas = [];
|
||||
|
||||
RMS.SetProgress(22);
|
||||
RMS.SetProgress(25);
|
||||
|
||||
// create bumps
|
||||
log("Creating bumps...");
|
||||
@ -292,7 +296,7 @@ createAreas(
|
||||
scaleByMapSize(100, 200)
|
||||
);
|
||||
|
||||
RMS.SetProgress(25);
|
||||
RMS.SetProgress(30);
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
@ -302,14 +306,14 @@ terrainPainter = new LayeredPainter(
|
||||
[2] // widths
|
||||
);
|
||||
elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 12, 2);
|
||||
var hillAreas = createAreas(
|
||||
createAreas(
|
||||
placer,
|
||||
[terrainPainter, elevationPainter, paintClass(clHill)],
|
||||
avoidClasses(clPlayer, 2, clWater, 5, clHill, 15),
|
||||
scaleByMapSize(1, 4) * numPlayers
|
||||
);
|
||||
|
||||
RMS.SetProgress(30);
|
||||
RMS.SetProgress(35);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
const MIN_TREES = 500;
|
||||
@ -340,35 +344,14 @@ for (var i = 0; i < types.length; ++i)
|
||||
);
|
||||
}
|
||||
|
||||
RMS.SetProgress(53);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,8), new SimpleObject(oStoneLarge, 0,1, 0,8)], true, clRock);
|
||||
createObjectGroupsByAreas(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clRock, 10),
|
||||
borderClasses(clHill, 1, 4)],
|
||||
scaleByMapSize(1,4) * numPlayers, 100,
|
||||
hillAreas
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create metal
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,8)], true, clMetal);
|
||||
createObjectGroupsByAreas(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clMetal, 10, clRock, 5),
|
||||
borderClasses(clHill, 1, 4)],
|
||||
scaleByMapSize(1,4) * numPlayers, 100,
|
||||
hillAreas
|
||||
);
|
||||
hillAreas = [];
|
||||
RMS.SetProgress(40);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [0.000183, 0.000321, 0.000458];
|
||||
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
{
|
||||
placer = new ClumpPlacer(mapArea * sizes[i], 0.3, 0.06, 0.5);
|
||||
placer = new ClumpPlacer(sizes[i], 0.3, 0.06, 0.5);
|
||||
painter = new LayeredPainter(
|
||||
[[tGrass,tGrassDirt75],[tGrassDirt75,tGrassDirt50], [tGrassDirt50,tGrassDirt25]], // terrains
|
||||
[1,1] // widths
|
||||
@ -381,12 +364,14 @@ for (var i = 0; i < sizes.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
RMS.SetProgress(45);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [0.000115, 0.000206, 0.000298];
|
||||
var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
{
|
||||
placer = new ClumpPlacer(mapArea * sizes[i], 0.3, 0.06, 0.5);
|
||||
placer = new ClumpPlacer(sizes[i], 0.3, 0.06, 0.5);
|
||||
painter = new TerrainPainter(tGrassPatch);
|
||||
createAreas(
|
||||
placer,
|
||||
@ -396,10 +381,35 @@ for (var i = 0; i < sizes.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
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(clWater, 0, clForest, 1, clPlayer, 5, clRock, 10)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroups(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 1, clPlayer, 5, clRock, 10)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroups(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 1, clPlayer, 5, clMetal, 10, clRock, 5)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
true
|
||||
@ -407,9 +417,11 @@ group = new SimpleGroup(
|
||||
createObjectGroups(
|
||||
group, 0,
|
||||
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0),
|
||||
mapArea/1000, 50
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create large decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
@ -419,9 +431,11 @@ group = new SimpleGroup(
|
||||
createObjectGroups(
|
||||
group, 0,
|
||||
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0),
|
||||
mapArea/2000, 50
|
||||
scaleByMapSize(8, 131), 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create deer
|
||||
log("Creating deer...");
|
||||
group = new SimpleGroup(
|
||||
@ -433,6 +447,8 @@ createObjectGroups(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create sheep
|
||||
log("Creating sheep...");
|
||||
group = new SimpleGroup(
|
||||
@ -444,6 +460,8 @@ createObjectGroups(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(80);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oOak, oOakLarge, oPine, oApple]; // some variation
|
||||
@ -452,14 +470,16 @@ for (var i = 0; i < types.length; ++i)
|
||||
{
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(types[i], 1,1, 0,3)],
|
||||
true
|
||||
true, clForest
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 1),
|
||||
avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 1, clMetal, 1, clRock, 1),
|
||||
num
|
||||
);
|
||||
}
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
//create small grass tufts
|
||||
log("Creating small grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
@ -467,10 +487,10 @@ group = new SimpleGroup(
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 2, clHill, 2, clPlayer, 2, clDirt, 0),
|
||||
mapArea * 0.000763
|
||||
scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
RMS.SetProgress(80);
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create large grass tufts
|
||||
log("Creating large grass tufts...");
|
||||
@ -479,10 +499,10 @@ group = new SimpleGroup(
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 3, clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0),
|
||||
mapArea * 0.000763
|
||||
scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
RMS.SetProgress(87);
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create bushes
|
||||
log("Creating bushes...");
|
||||
@ -491,7 +511,7 @@ group = new SimpleGroup(
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 1, clHill, 1, clPlayer, 1, clDirt, 1),
|
||||
mapArea * 0.000763, 50
|
||||
scaleByMapSize(13, 200), 50
|
||||
);
|
||||
|
||||
// Set environment
|
||||
|
@ -223,6 +223,8 @@ for (var ix = 0; ix <= mapSize; ix++)
|
||||
}
|
||||
}
|
||||
|
||||
RMS.SetProgress(15);
|
||||
|
||||
// Paint base terrain
|
||||
|
||||
log("Painting terrain...");
|
||||
@ -387,6 +389,8 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
}
|
||||
}
|
||||
|
||||
RMS.SetProgress(30);
|
||||
|
||||
for (var i = 1; i <= numPlayers; i++)
|
||||
{
|
||||
log("Creating base for player " + i + "...");
|
||||
@ -398,11 +402,16 @@ for (var i = 1; i <= numPlayers; i++)
|
||||
var iz = round(fz);
|
||||
addToClass(ix, iz, clPlayer);
|
||||
|
||||
// create the city patch
|
||||
// create the city patch, flatten area under TC
|
||||
var cityRadius = 8;
|
||||
var placer = new ClumpPlacer(PI*cityRadius*cityRadius, 0.6, 0.3, 10, ix, iz);
|
||||
var painter = new LayeredPainter([tGrass, tCity], [1]);
|
||||
createArea(placer, painter, null);
|
||||
var elevationPainter = new SmoothElevationPainter(
|
||||
ELEVATION_SET, // type
|
||||
5, // elevation
|
||||
2 // blend radius
|
||||
);
|
||||
createArea(placer, [painter, elevationPainter], null);
|
||||
|
||||
// get civ specific starting entities
|
||||
var civEntities = getStartingEntities(i-1);
|
||||
@ -488,28 +497,7 @@ for (var i = 1; i <= numPlayers; i++)
|
||||
createObjectGroup(group, 0, avoidClasses(clBaseResource,2));
|
||||
}
|
||||
|
||||
log("Creating straggler trees...");
|
||||
// create straggler trees
|
||||
var trees = [oCarob, oBeech, oLombardyPoplar, oLombardyPoplar, oPine];
|
||||
for (var t in trees)
|
||||
{
|
||||
group = new SimpleGroup([new SimpleObject(trees[t], 1,1, 0,1)], true, clForest);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 5, clCliff, 0, clForest, 1, clPlayer, 15),
|
||||
mapArea/7000, 50
|
||||
);
|
||||
}
|
||||
|
||||
log("Creating cypress trees...");
|
||||
// create cypresses
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oCypress2, 1,3, 0,3),
|
||||
new SimpleObject(oCypress1, 0,2, 0,2)]
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 4, clCliff, 2, clForest, 1, clPlayer, 15),
|
||||
mapArea/3500, 50
|
||||
);
|
||||
RMS.SetProgress(40);
|
||||
|
||||
log("Creating bushes...");
|
||||
// create bushes
|
||||
@ -519,9 +507,11 @@ group = new SimpleGroup(
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 4, clCliff, 2),
|
||||
mapArea/1800, 50
|
||||
scaleByMapSize(9, 146), 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(45);
|
||||
|
||||
log("Creating rocks...");
|
||||
// create rocks
|
||||
group = new SimpleGroup(
|
||||
@ -530,27 +520,63 @@ group = new SimpleGroup(
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 0, clCliff, 0),
|
||||
mapArea/1800, 50
|
||||
scaleByMapSize(9, 146), 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,8), new SimpleObject(oStoneLarge, 0,1, 0,8)], true, clStone);
|
||||
// create large stone quarries
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clStone);
|
||||
createObjectGroups(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 0, clPlayer, 20, clStone, 15),
|
||||
borderClasses(clCliff, 0, 5)],
|
||||
scaleByMapSize(1,4) * numPlayers, 100
|
||||
[avoidClasses(clWater, 0, clForest, 1, clPlayer, 20, clStone, 15)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clStone);
|
||||
createObjectGroups(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 1, clPlayer, 20, clStone, 15)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create metal
|
||||
// create large metal quarries
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,2)], true, clMetal);
|
||||
createObjectGroups(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 0, clPlayer, 20, clMetal, 15, clStone, 5),
|
||||
[avoidClasses(clWater, 0, clForest, 1, clPlayer, 20, clMetal, 15, clStone, 5),
|
||||
borderClasses(clCliff, 0, 5)],
|
||||
scaleByMapSize(1,4) * numPlayers, 100
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
// create straggler trees
|
||||
var trees = [oCarob, oBeech, oLombardyPoplar, oLombardyPoplar, oPine];
|
||||
for (var t in trees)
|
||||
{
|
||||
group = new SimpleGroup([new SimpleObject(trees[t], 1,1, 0,1)], true, clForest);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 5, clCliff, 0, clForest, 1, clPlayer, 15, clMetal, 1, clStone, 1),
|
||||
scaleByMapSize(2, 38), 50
|
||||
);
|
||||
}
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create straggler cypresses
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oCypress2, 1,3, 0,3), new SimpleObject(oCypress1, 0,2, 0,2)],
|
||||
true
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 4, clCliff, 2, clForest, 1, clPlayer, 15, clMetal, 1, clStone, 1),
|
||||
scaleByMapSize(5, 75), 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(80);
|
||||
|
||||
log("Creating sheep...");
|
||||
// create sheep
|
||||
group = new SimpleGroup([new SimpleObject(oSheep, 2,4, 0,2)], true, clFood);
|
||||
@ -559,13 +585,30 @@ createObjectGroups(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
log("Creating fish...");
|
||||
// create fish
|
||||
group = new SimpleGroup([new SimpleObject(oFish, 1,1, 0,1)], true, clFood);
|
||||
createObjectGroups(group, 0,
|
||||
[borderClasses(clWater, 7, 0), avoidClasses(clFood, 8, clCliff, 0)],
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
var num = scaleByMapSize(4, 16);
|
||||
var offsetX = mapSize * WATER_WIDTH/2;
|
||||
for (var i = 0; i < num; ++i)
|
||||
{
|
||||
var cX = round(offsetX + offsetX/2 * randFloat(-1, 1));
|
||||
var cY = round((i + 0.5) * mapSize/num);
|
||||
group = new SimpleGroup([new SimpleObject(oFish, 1,1, 0,1)], true, clFood, cX, cY);
|
||||
createObjectGroup(group, 0);
|
||||
}
|
||||
|
||||
for (var i = 0; i < num; ++i)
|
||||
{
|
||||
var cX = round(mapSize - offsetX + offsetX/2 * randFloat(-1, 1));
|
||||
var cY = round((i + 0.5) * mapSize/num);
|
||||
error(cX+" "+cY);
|
||||
group = new SimpleGroup([new SimpleObject(oFish, 1,1, 0,1)], true, clFood, cX, cY);
|
||||
createObjectGroup(group, 0);
|
||||
}
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create deer
|
||||
log("Creating deer...");
|
||||
@ -578,6 +621,8 @@ createObjectGroups(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
log("Creating berry bushes...");
|
||||
// create berry bushes
|
||||
group = new SimpleGroup([new SimpleObject(oBerryBush, 5,7, 0,3)], true, clFood);
|
||||
|
@ -5,6 +5,7 @@
|
||||
"Description" : "The Italian peninsula",
|
||||
"BaseTerrain" : ["medit_grass_field_dry", "medit_grass_field_brown", "medit_grass_field_b"],
|
||||
"BaseHeight" : 0,
|
||||
"CircularMap" : false,
|
||||
"XXXXXX" : "Optionally define other things here, like we would for a scenario"
|
||||
}
|
||||
}
|
@ -191,7 +191,7 @@ for (var i = 0; i < numPlayers; i++)
|
||||
createObjectGroup(group, 0, avoidClasses(clBaseResource,1));
|
||||
}
|
||||
|
||||
RMS.SetProgress(5);
|
||||
RMS.SetProgress(10);
|
||||
|
||||
// create patches
|
||||
log("Creating dune patches...");
|
||||
@ -202,6 +202,8 @@ createAreas(placer, [painter, paintClass(clPatch)],
|
||||
scaleByMapSize(5, 20)
|
||||
);
|
||||
|
||||
RMS.SetProgress(15);
|
||||
|
||||
log("Creating sand patches...");
|
||||
var placer = new ClumpPlacer(scaleByMapSize(25, 100), 0.2, 0.1, 0);
|
||||
var painter = new TerrainPainter([tSand, tFineSand]);
|
||||
@ -210,7 +212,7 @@ createAreas(placer, [painter, paintClass(clPatch)],
|
||||
scaleByMapSize(15, 50)
|
||||
);
|
||||
|
||||
RMS.SetProgress(24);
|
||||
RMS.SetProgress(20);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(25, 100), 0.2, 0.1, 0);
|
||||
@ -220,7 +222,7 @@ createAreas(placer, [painter, paintClass(clPatch)],
|
||||
scaleByMapSize(15, 50)
|
||||
);
|
||||
|
||||
RMS.SetProgress(32);
|
||||
RMS.SetProgress(25);
|
||||
|
||||
// create the oasis
|
||||
log("Creating oasis...");
|
||||
@ -230,6 +232,8 @@ painter = new LayeredPainter([[tSand, pForest], [tGrassSand25, pForestOasis], tG
|
||||
elevationPainter = new SmoothElevationPainter(ELEVATION_MODIFY, -11, 8);
|
||||
createArea(placer, [painter, elevationPainter, paintClass(clForest)], null);
|
||||
|
||||
RMS.SetProgress(30);
|
||||
|
||||
// create oasis wildlife
|
||||
var num = round(PI * oRadius / 8);
|
||||
var constraint = new AndConstraint([borderClasses(clForest, 0, 3), avoidClasses(clForest, 0)]);
|
||||
@ -274,7 +278,7 @@ for (var i = 0; i < num; ++i)
|
||||
createObjectGroup(group, 0);
|
||||
}
|
||||
|
||||
RMS.SetProgress(51);
|
||||
RMS.SetProgress(35);
|
||||
|
||||
// create hills
|
||||
log("Creating level 1 hills...");
|
||||
@ -289,6 +293,8 @@ var hillAreas = createAreas(placer, [terrainPainter, elevationPainter, paintClas
|
||||
scaleByMapSize(10,20), 100
|
||||
);
|
||||
|
||||
RMS.SetProgress(40);
|
||||
|
||||
log("Creating small level 1 hills...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(25,150), 0.25, 0.1, 0.5);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@ -305,23 +311,7 @@ for (var i = 0; i < tempAreas.length; ++i)
|
||||
hillAreas.push(tempAreas[i]);
|
||||
}
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,8), new SimpleObject(oStoneLarge, 0,1, 0,8), new RandomObject(aBushes, 2,4, 0,2)], true, clRock);
|
||||
createObjectGroups(group, 0,
|
||||
[avoidClasses(clForest, 2, clPlayer, 10, clRock, 10, clHill1, 0)],
|
||||
scaleByMapSize(1,4) * numPlayers, 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create metal
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,8), new RandomObject(aBushes, 2,4, 0,2)], true, clMetal);
|
||||
createObjectGroups(group, 0,
|
||||
[avoidClasses(clForest, 2, clPlayer, 10, clMetal, 10, clRock, 5, clHill1, 0)],
|
||||
scaleByMapSize(1,4) * numPlayers, 100
|
||||
);
|
||||
RMS.SetProgress(45);
|
||||
|
||||
// create decorative rocks for hills
|
||||
log("Creating decorative rocks...");
|
||||
@ -335,7 +325,7 @@ createObjectGroupsByAreas(group, 0,
|
||||
hillAreas
|
||||
);
|
||||
|
||||
RMS.SetProgress(81);
|
||||
RMS.SetProgress(50);
|
||||
|
||||
log("Creating level 2 hills...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(25,150), 0.25, 0.1, 0);
|
||||
@ -350,7 +340,7 @@ createAreasInAreas(placer, [terrainPainter, elevationPainter],
|
||||
hillAreas
|
||||
);
|
||||
|
||||
RMS.SetProgress(91);
|
||||
RMS.SetProgress(55);
|
||||
|
||||
log("Creating level 3 hills...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(12, 75), 0.25, 0.1, 0);
|
||||
@ -366,6 +356,8 @@ createAreas(placer, [terrainPainter, elevationPainter],
|
||||
);
|
||||
hillAreas = [];
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
// create bumps
|
||||
log("Creating bumps...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 0);
|
||||
@ -377,6 +369,8 @@ createAreas(
|
||||
scaleByMapSize(100, 200)
|
||||
);
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
const MIN_TREES = 500;
|
||||
const MAX_TREES = 2500;
|
||||
@ -396,7 +390,32 @@ createAreas(placer, [painter, paintClass(clForest)],
|
||||
num, 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(97);
|
||||
RMS.SetProgress(70);
|
||||
|
||||
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), new RandomObject(aBushes, 2,4, 0,2)], true, clRock);
|
||||
createObjectGroups(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill1, 0)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3), new RandomObject(aBushes, 2,4, 0,2)], true, clRock);
|
||||
createObjectGroups(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill1, 0)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4), new RandomObject(aBushes, 2,4, 0,2)], true, clMetal);
|
||||
createObjectGroups(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5, clHill1, 0)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
RMS.SetProgress(80);
|
||||
|
||||
// create gazelles
|
||||
log("Creating gazelles...");
|
||||
@ -422,6 +441,8 @@ createObjectGroups(group, 0,
|
||||
scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oDatePalm, oSDatePalm]; // some variation
|
||||
@ -430,17 +451,19 @@ for (var i = 0; i < types.length; ++i)
|
||||
{
|
||||
group = new SimpleGroup([new SimpleObject(types[i], 1,1, 0,0)], true);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clForest, 0, clHill1, 1, clPlayer, 0),
|
||||
avoidClasses(clForest, 0, clHill1, 1, clPlayer, 0, clMetal, 1, clRock, 1),
|
||||
num
|
||||
);
|
||||
}
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup([new RandomObject(aBushes, 2,3, 0,2)]);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clHill1, 1, clPlayer, 0, clForest, 0),
|
||||
mapArea/1000
|
||||
scaleByMapSize(16, 262)
|
||||
);
|
||||
|
||||
// create rocks
|
||||
@ -448,7 +471,7 @@ log("Creating more decorative rocks...");
|
||||
group = new SimpleGroup([new SimpleObject(aDecorativeRock, 1,2, 0,2)]);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clHill1, 1, clPlayer, 0, clForest, 0),
|
||||
mapArea/1000
|
||||
scaleByMapSize(16, 262)
|
||||
);
|
||||
|
||||
// Export map data
|
||||
|
@ -105,39 +105,38 @@ function setDefaults(defs, obj)
|
||||
}
|
||||
|
||||
// Read civ data and player defaults
|
||||
function getStartingData()
|
||||
function loadCivData()
|
||||
{
|
||||
// Load civilization data
|
||||
if (!Atlas.State.CivData)
|
||||
{
|
||||
Atlas.State.CivData = [];
|
||||
Atlas.State.CivNames = [];
|
||||
Atlas.State.CivCodes = [];
|
||||
|
||||
var dataArray = Atlas.Message.GetCivData().data;
|
||||
if (dataArray)
|
||||
{ // parse JSON strings into objects
|
||||
for (var i = 0; i < dataArray.length; ++i)
|
||||
Atlas.State.CivData = [];
|
||||
Atlas.State.CivNames = [];
|
||||
Atlas.State.CivCodes = [];
|
||||
|
||||
var dataArray = Atlas.Message.GetCivData().data;
|
||||
if (dataArray)
|
||||
{ // parse JSON strings into objects
|
||||
for (var i = 0; i < dataArray.length; ++i)
|
||||
{
|
||||
var civ = JSON.parse(dataArray[i]);
|
||||
if (civ)
|
||||
{
|
||||
var civ = JSON.parse(dataArray[i]);
|
||||
if (civ)
|
||||
{
|
||||
Atlas.State.CivData.push(civ);
|
||||
Atlas.State.CivNames.push(civ.Name);
|
||||
Atlas.State.CivCodes.push(civ.Code);
|
||||
}
|
||||
Atlas.State.CivData.push(civ);
|
||||
Atlas.State.CivNames.push(civ.Name);
|
||||
Atlas.State.CivCodes.push(civ.Code);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function loadPlayerDefaults()
|
||||
{
|
||||
// Load player default data (names, civs, colors, etc)
|
||||
if (!Atlas.State.PlayerDefaults)
|
||||
Atlas.State.PlayerDefaults = [];
|
||||
|
||||
var rawData = Atlas.Message.GetPlayerDefaults().defaults;
|
||||
if(rawData)
|
||||
{
|
||||
var rawData = Atlas.Message.GetPlayerDefaults().defaults;
|
||||
if(rawData)
|
||||
{
|
||||
Atlas.State.PlayerDefaults = JSON.parse(rawData).PlayerData;
|
||||
}
|
||||
Atlas.State.PlayerDefaults = JSON.parse(rawData).PlayerData;
|
||||
}
|
||||
}
|
||||
|
||||
@ -363,16 +362,14 @@ function init(window)
|
||||
var rmsPanel = new wxPanel(window, -1);
|
||||
var rmsSizer = new wxStaticBoxSizer(new wxStaticBox(rmsPanel, -1, 'Random map'), wxOrientation.VERTICAL);
|
||||
|
||||
var scriptNames = [];
|
||||
var scriptData = [];
|
||||
boxSizer = new wxBoxSizer(wxOrientation.HORIZONTAL);
|
||||
var rmsChoice = new wxChoice(rmsPanel, -1, wxDefaultPosition, wxDefaultSize, scriptNames);
|
||||
var rmsChoice = new wxChoice(rmsPanel, -1, wxDefaultPosition, wxDefaultSize, []);
|
||||
rmsChoice.toolTip = "Select the random map script to run";
|
||||
function loadScriptChoices()
|
||||
{
|
||||
// Reload RMS data
|
||||
scriptNames = [];
|
||||
scriptData = [];
|
||||
Atlas.State.scriptNames = [];
|
||||
Atlas.State.scriptData = [];
|
||||
|
||||
// Get array of RMS data
|
||||
var rawData = Atlas.Message.GetRMSData().data;
|
||||
@ -382,14 +379,14 @@ function init(window)
|
||||
var data = JSON.parse(rawData[i]);
|
||||
if (data && data.settings)
|
||||
{
|
||||
scriptData.push(data);
|
||||
scriptNames.push(data.settings.Name);
|
||||
Atlas.State.scriptData.push(data);
|
||||
Atlas.State.scriptNames.push(data.settings.Name);
|
||||
}
|
||||
}
|
||||
|
||||
// Add script names to choice control
|
||||
rmsChoice.clear();
|
||||
rmsChoice.append(scriptNames);
|
||||
rmsChoice.append(Atlas.State.scriptNames);
|
||||
rmsChoice.selection = 0;
|
||||
}
|
||||
boxSizer.add(rmsChoice, 1, wxAlignment.CENTER_VERTICAL);
|
||||
@ -424,7 +421,7 @@ function init(window)
|
||||
var selection = rmsChoice.selection;
|
||||
if (selection != -1)
|
||||
{
|
||||
var RMSData = scriptData[selection].settings;
|
||||
var RMSData = Atlas.State.scriptData[selection].settings;
|
||||
if (RMSData)
|
||||
{
|
||||
if (useRandomCtrl.value)
|
||||
@ -432,22 +429,17 @@ function init(window)
|
||||
generateRandomSeed();
|
||||
}
|
||||
|
||||
// Base terrains must be array
|
||||
var terrainArray = [];
|
||||
if (RMSData.BaseTerrain instanceof Array)
|
||||
// Copy RMS data to map settings
|
||||
for (var prop in RMSData)
|
||||
{
|
||||
terrainArray = RMSData.BaseTerrain;
|
||||
}
|
||||
else
|
||||
{ // Add string to array
|
||||
terrainArray.push(RMSData.BaseTerrain);
|
||||
Atlas.State.mapSettings.settings[prop] = RMSData[prop];
|
||||
}
|
||||
|
||||
// Complete map settings
|
||||
Atlas.State.mapSettings.settings.Seed = Atlas.State.Seed ? Atlas.State.Seed : 0;
|
||||
Atlas.State.mapSettings.settings.Size = sizeTiles[sizeChoice.selection];
|
||||
Atlas.State.mapSettings.settings.BaseTerrain = terrainArray;
|
||||
Atlas.State.mapSettings.settings.BaseHeight = RMSData.BaseHeight;
|
||||
|
||||
// TODO: Would be nice to have some sort of busy notification here
|
||||
|
||||
// Generate map
|
||||
var ret = Atlas.Message.GenerateMap(RMSData.Script, JSON.stringify(Atlas.State.mapSettings.settings));
|
||||
@ -514,15 +506,30 @@ function init(window)
|
||||
{
|
||||
if (!g_externalNotify)
|
||||
{
|
||||
// If we don't have civ data or player defaults yet, get those
|
||||
getStartingData();
|
||||
// We have to do these steps here, because the simulation is not
|
||||
// initialized when this script is first loaded
|
||||
|
||||
// If we don't have civ data, load those
|
||||
if (!Atlas.State.CivData)
|
||||
{
|
||||
loadCivData();
|
||||
}
|
||||
|
||||
// If we don't have default player data, load those
|
||||
if (!Atlas.State.PlayerDefaults)
|
||||
{
|
||||
loadPlayerDefaults();
|
||||
}
|
||||
|
||||
// If we don't have RMS data yet, load those
|
||||
if (!Atlas.State.scriptData)
|
||||
{
|
||||
loadScriptChoices();
|
||||
}
|
||||
|
||||
// Load map settings from engine
|
||||
getMapSettings();
|
||||
|
||||
// Load RMS names from engine
|
||||
loadScriptChoices();
|
||||
|
||||
// Update UI controls
|
||||
updateMapName();
|
||||
updateMapDesc();
|
||||
|
Loading…
Reference in New Issue
Block a user