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:
historic_bruno 2011-05-06 23:50:30 +00:00
parent f6ffe7f121
commit 0fc0335285
5 changed files with 252 additions and 156 deletions

View File

@ -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

View File

@ -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);

View File

@ -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"
}
}

View File

@ -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

View File

@ -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();