Ticket #4152: heightmapFix2016-11-23.patch

File heightmapFix2016-11-23.patch, 1.5 KB (added by FeXoR, 7 years ago)

Graciously handles arguments that doesn't contain any valid tile in distributeEntitiesByHeight

  • binaries/data/mods/public/maps/random/heightmap/heightmap.js

     
    119119                if (!isCircular || r - getDistance(x, y, r, r) >= minDistance) // Is far enough away from map border
    120120                    validTiles.push({ "x": x, "y": y });
    121121
    122     for (let tries = 0; tries < maxTries; ++tries)
     122    if (validTiles.length)
    123123    {
    124         let tile = validTiles[randInt(validTiles.length)];
    125         let isValid = true;
    126         for (let p = 0; p < placements.length; ++p)
     124        for (let tries = 0; tries < maxTries; ++tries)
    127125        {
    128             if (getDistance(placements[p].x, placements[p].y, tile.x, tile.y) < minDistance)
     126            let tile = validTiles[randInt(validTiles.length)];
     127            let isValid = true;
     128            for (let p = 0; p < placements.length; ++p)
    129129            {
    130                 isValid = false;
    131                 break;
     130                if (getDistance(placements[p].x, placements[p].y, tile.x, tile.y) < minDistance)
     131                {
     132                    isValid = false;
     133                    break;
     134                }
    132135            }
     136            if (isValid)
     137            {
     138                placeObject(tile.x, tile.y, entityList[randInt(entityList.length)], 0, randFloat(0, 2*PI));
     139                placements.push(tile);
     140            }
    133141        }
    134         if (isValid)
    135         {
    136             placeObject(tile.x, tile.y, entityList[randInt(entityList.length)], 0, randFloat(0, 2*PI));
    137             placements.push(tile);
    138         }
    139142    }
     143    else
     144    {
     145        log("No validTiles found for the given arguments! " +  new Error().stack);
     146    }
    140147}
    141148
    142149/**