From 6c7f3ae0099b5034e6adac0214c75fe4587267d0 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. git-svn-id: https://svn.wildfiregames.com/public/ps/trunk@21414 3db68df2-c116-0410-a063-a993310a9797 --- 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)) -- 2.11.4.GIT