1
0
forked from 0ad/0ad

fix #3043 by increasing the minimum distance between civs

This was SVN commit r16312.
This commit is contained in:
mimo 2015-02-09 19:21:56 +00:00
parent cc0c21d46b
commit a8f726df55

View File

@ -1256,6 +1256,8 @@ paintTileClassBasedOnHeight(3.12, 40, 1, clHill);
var playerX = new Array(numPlayers);
var playerZ = new Array(numPlayers);
var distmin = scaleByMapSize(60,240);
distmin *= distmin;
for (var i = 0; i < numPlayers; i++)
{
@ -1264,30 +1266,50 @@ for (var i = 0; i < numPlayers; i++)
{
for (var mz = 0; mz < mapSize; mz++)
{
var placable = true;
if (!g_Map.validT(mx, mz, 6))
placable = false;
continue;
var placable = true;
for (var c = 0; c < i; c++)
if (sqrt((playerX[c] - mx)*(playerX[c] - mx) + (playerZ[c] - mz)*(playerZ[c] - mz)) <= scaleByMapSize(14,27))
if ((playerX[c] - mx)*(playerX[c] - mx) + (playerZ[c] - mz)*(playerZ[c] - mz) < distmin)
placable = false;
if (!placable)
continue;
if ((g_Map.getHeight(mx, mz) >= 3)&&(g_Map.getHeight(mx, mz) <= 3.12)&&(placable))
if (g_Map.getHeight(mx, mz) >= 3 && g_Map.getHeight(mx, mz) <= 3.12)
placableArea.push([mx, mz]);
}
}
if (placableArea == [])
if (!placableArea.length)
{
for (var mx = 0; mx < mapSize; ++mx)
{
for (var mz = 0; mz < mapSize; ++mz)
for (var mz = 0; mz < mapSize; mz++)
{
if ((g_Map.getHeight(mx, mz) >= 3)&&(g_Map.getHeight(mx, mz) <= 3.12))
if (!g_Map.validT(mx, mz, 6))
continue;
var placable = true;
for (var c = 0; c < i; c++)
if ((playerX[c] - mx)*(playerX[c] - mx) + (playerZ[c] - mz)*(playerZ[c] - mz) < distmin/4)
placable = false;
if (!placable)
continue;
if (g_Map.getHeight(mx, mz) >= 3 && g_Map.getHeight(mx, mz) <= 3.12)
placableArea.push([mx, mz]);
}
}
}
if (!placableArea.length)
{
for (var mx = 0; mx < mapSize; ++mx)
for (var mz = 0; mz < mapSize; ++mz)
if (g_Map.getHeight(mx, mz) >= 3 && g_Map.getHeight(mx, mz) <= 3.12)
placableArea.push([mx, mz]);
}
var chosen = floor(Math.random()*placableArea.length);
playerX[i] = placableArea[chosen][0];
playerZ[i] = placableArea[chosen][1];