mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-06-21 10:03:43 +00:00
Array simplifications for random map scripts.
Use for...of loop and remove unneeded array and length variables. Use fill and concat to remove unneeded loops. Utilize map to create new arrays instead of reusing the same inside fill. Remove an unneeded non-recursive copy in the RandomGroup placer. This was SVN commit r18876.
This commit is contained in:
@@ -108,9 +108,9 @@ for (var i = 0; i < numPlayers; i++)
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
var playerX = [];
|
||||
var playerZ = [];
|
||||
var playerAngle = [];
|
||||
|
||||
var startAngle = randFloat(0, TWO_PI);
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
@@ -408,16 +408,13 @@ for (var i = 0; i < sizes.length; i++)
|
||||
RMS.SetProgress(62);
|
||||
|
||||
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);
|
||||
createObjectGroupsByAreas(group, 0,
|
||||
for (let tree of [oCarob, oBeech, oLombardyPoplar, oLombardyPoplar, oPine])
|
||||
createObjectGroupsByAreas(
|
||||
new SimpleGroup([new SimpleObject(tree, 1,1, 0,1)], true, clForest),
|
||||
0,
|
||||
avoidClasses(clWater, 2, clForest, 2, clCity, 3, clBaseResource, 1, clRock, 1, clMetal, 1, clPlayer, 1, clHill, 1),
|
||||
scaleByMapSize(2, 38), 50, areas
|
||||
);
|
||||
}
|
||||
RMS.SetProgress(66);
|
||||
|
||||
log("Create straggler cypresses...");
|
||||
|
||||
@@ -75,11 +75,10 @@ for (var i = 0; i < numPlayers; i++)
|
||||
playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
var playerPos = new Array(numPlayers);
|
||||
var playerX = [];
|
||||
var playerZ = [];
|
||||
var playerAngle = [];
|
||||
var playerPos = [];
|
||||
var iop = 0;
|
||||
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
@@ -462,20 +462,16 @@ createObjectGroups(group, 0,
|
||||
avoidClasses(clForest, 4, clWater, 1, clPlayer, 40, clStone, 30, clMetal, 10, clCliff, 3),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,2)], true, clMetal);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clForest, 4, clWater, 1, clPlayer, 40, clMetal, 50, clCliff, 3),
|
||||
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)
|
||||
for (let tree of [oCarob, oBeech, oLombardyPoplar, oLombardyPoplar, oPine])
|
||||
{
|
||||
group = new SimpleGroup([new SimpleObject(trees[t], 1,1, 0,1)], true, clForest);
|
||||
createObjectGroups(group, 0,
|
||||
|
||||
@@ -68,10 +68,9 @@ for (var i = 0; i < numPlayers; i++)
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
var playerX = [];
|
||||
var playerZ = [];
|
||||
var playerAngle = [];
|
||||
|
||||
var startAngle = randFloat(0, TWO_PI);
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
@@ -30,12 +30,7 @@ ClumpPlacer.prototype.place = function(constraint)
|
||||
var retVec = [];
|
||||
|
||||
var size = getMapSize();
|
||||
var gotRet = new Array(size);
|
||||
for (var i = 0; i < size; ++i)
|
||||
{
|
||||
gotRet[i] = new Uint8Array(size); // bool / uint8
|
||||
}
|
||||
|
||||
var gotRet = new Array(size).fill(0).map(p => new Uint8Array(size)); // booleans
|
||||
var radius = sqrt(this.size / PI);
|
||||
var perim = 4 * radius * 2 * PI;
|
||||
var intPerim = ceil(perim);
|
||||
@@ -153,16 +148,7 @@ ChainPlacer.prototype.place = function(constraint)
|
||||
var failed = 0, count = 0;
|
||||
var queueEmpty = (this.q.length ? false : true);
|
||||
|
||||
var gotRet = new Array(size);
|
||||
for (var i = 0; i < size; ++i)
|
||||
{
|
||||
gotRet[i] = new Array(size);
|
||||
for (var j = 0; j < size; ++j)
|
||||
{
|
||||
gotRet[i][j] = -1;
|
||||
}
|
||||
}
|
||||
|
||||
var gotRet = new Array(size).fill(0).map(p => new Array(size).fill(-1));
|
||||
--size;
|
||||
|
||||
this.minRadius = Math.min(this.maxRadius, Math.max(this.minRadius, 1));
|
||||
@@ -536,28 +522,25 @@ SimpleGroup.prototype.place = function(player, constraint)
|
||||
var resultObjs = [];
|
||||
|
||||
// Try placement of objects
|
||||
var length = this.elements.length;
|
||||
for (var i = 0; i < length; i++)
|
||||
for (let element of this.elements)
|
||||
{
|
||||
var objs = this.elements[i].place(this.x, this.z, player, this.avoidSelf, constraint);
|
||||
var objs = element.place(this.x, this.z, player, this.avoidSelf, constraint);
|
||||
|
||||
if (objs === undefined)
|
||||
return false;
|
||||
|
||||
for (var j = 0; j < objs.length; ++j)
|
||||
resultObjs.push(objs[j]);
|
||||
resultObjs = resultObjs.concat(objs);
|
||||
}
|
||||
|
||||
// Add placed objects to map
|
||||
length = resultObjs.length;
|
||||
for (var i=0; i < length; i++)
|
||||
for (let obj of resultObjs)
|
||||
{
|
||||
if (g_Map.validT(resultObjs[i].position.x / CELL_SIZE, resultObjs[i].position.z / CELL_SIZE, MAP_BORDER_WIDTH))
|
||||
g_Map.addObject(resultObjs[i]);
|
||||
if (g_Map.validT(obj.position.x / CELL_SIZE, obj.position.z / CELL_SIZE, MAP_BORDER_WIDTH))
|
||||
g_Map.addObject(obj);
|
||||
|
||||
// Convert position to integer number of tiles
|
||||
if (this.tileClass !== undefined)
|
||||
this.tileClass.add(Math.floor(resultObjs[i].position.x/CELL_SIZE), Math.floor(resultObjs[i].position.z/CELL_SIZE));
|
||||
this.tileClass.add(Math.floor(obj.position.x/CELL_SIZE), Math.floor(obj.position.z/CELL_SIZE));
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -586,32 +569,21 @@ function RandomGroup(elements, avoidSelf, tileClass, x, z)
|
||||
|
||||
RandomGroup.prototype.place = function(player, constraint)
|
||||
{
|
||||
var resultObjs = [];
|
||||
|
||||
// Pick one of the object placers at random
|
||||
var placer = this.elements[randInt(this.elements.length)];
|
||||
|
||||
var objs = placer.place(this.x, this.z, player, this.avoidSelf, constraint);
|
||||
// Failure
|
||||
if (objs === undefined)
|
||||
{
|
||||
var resultObjs = placer.place(this.x, this.z, player, this.avoidSelf, constraint);
|
||||
if (resultObjs === undefined)
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (var j = 0; j < objs.length; ++j)
|
||||
resultObjs.push(objs[j]);
|
||||
}
|
||||
|
||||
// Add placed objects to map
|
||||
var length = resultObjs.length;
|
||||
for (var i=0; i < length; i++)
|
||||
for (let obj of resultObjs)
|
||||
{
|
||||
g_Map.addObject(resultObjs[i]);
|
||||
g_Map.addObject(obj);
|
||||
|
||||
// Convert position to integer number of tiles
|
||||
if (this.tileClass !== undefined)
|
||||
this.tileClass.add(Math.floor(resultObjs[i].position.x/CELL_SIZE), Math.floor(resultObjs[i].position.z/CELL_SIZE));
|
||||
this.tileClass.add(Math.floor(obj.position.x/CELL_SIZE), Math.floor(obj.position.z/CELL_SIZE));
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user