From 85a3a889e741ba30ca63e715b01987cd969034a3 Mon Sep 17 00:00:00 2001 From: elexis Date: Fri, 2 Mar 2018 16:16:45 +0000 Subject: [PATCH] Add "has" helper function to TileClass, so that one can find out if the given tile is marked with that class or not without having to fallback to Constraints. Performance improvement for Ambush, refs #5011. This was SVN commit r21414. --- binaries/data/mods/public/maps/random/ambush.js | 2 +- binaries/data/mods/public/maps/random/latium.js | 2 +- binaries/data/mods/public/maps/random/mediterranean.js | 2 +- binaries/data/mods/public/maps/random/rmgen/TileClass.js | 5 +++++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/binaries/data/mods/public/maps/random/ambush.js b/binaries/data/mods/public/maps/random/ambush.js index b55d73e837..29e660f057 100644 --- a/binaries/data/mods/public/maps/random/ambush.js +++ b/binaries/data/mods/public/maps/random/ambush.js @@ -35,7 +35,7 @@ addElements([ "avoid": [g_TileClasses.bluffIgnore, 0], "sizes": ["normal", "big", "huge"], "mixes": ["same"], - "amounts": ["tons"] + "amounts": ["many"] }, { "func": addHills, diff --git a/binaries/data/mods/public/maps/random/latium.js b/binaries/data/mods/public/maps/random/latium.js index 9fdc4310a7..aec7ec8e20 100644 --- a/binaries/data/mods/public/maps/random/latium.js +++ b/binaries/data/mods/public/maps/random/latium.js @@ -143,7 +143,7 @@ for (var ix = 0; ix <= mapSize; ix++) var pn = playerNearness(x, z); let c = startAngle ? z : x; - let distToWater = stayClasses(clWater, 1).allows(position) ? 0 : (0.5 - WATER_WIDTH - Math.abs(c - 0.5)); + let distToWater = clWater.has(position) ? 0 : (0.5 - WATER_WIDTH - Math.abs(c - 0.5)); let h = distToWater ? heightHill * (1 - Math.abs(c - 0.5) / (0.5 - WATER_WIDTH)) : g_Map.getHeight(position); // add some base noise diff --git a/binaries/data/mods/public/maps/random/mediterranean.js b/binaries/data/mods/public/maps/random/mediterranean.js index afe2c1c69c..561592b1ba 100644 --- a/binaries/data/mods/public/maps/random/mediterranean.js +++ b/binaries/data/mods/public/maps/random/mediterranean.js @@ -174,7 +174,7 @@ if (!isNomad()) for (let i = 0; i < getNumPlayers(); ++i) { g_Map.logger.printDuration(); - setBiome(climateZones.find(zone => stayClasses(zone.tileClass, 1).allows(playerPosition[i])).biome); + setBiome(climateZones.find(zone => zone.tileClass.has(playerPosition[i])).biome); createArea( new ClumpPlacer(diskArea(defaultPlayerBaseRadius() * 0.8), 0.95, 0.6, Infinity, playerPosition[i]), diff --git a/binaries/data/mods/public/maps/random/rmgen/TileClass.js b/binaries/data/mods/public/maps/random/rmgen/TileClass.js index a515a63553..b211e36850 100644 --- a/binaries/data/mods/public/maps/random/rmgen/TileClass.js +++ b/binaries/data/mods/public/maps/random/rmgen/TileClass.js @@ -76,6 +76,11 @@ function TileClass(size) } } +TileClass.prototype.has = function(position) +{ + return !!this.inclusionCount[position.x] && !!this.inclusionCount[position.x][position.y]; +} + TileClass.prototype.add = function(position) { if (!this.inclusionCount[position.x][position.y] && g_Map.validTile(position))