diff --git a/binaries/data/mods/public/maps/random/ardennes_forest.js b/binaries/data/mods/public/maps/random/ardennes_forest.js index 1074c09514..b2b4246235 100644 --- a/binaries/data/mods/public/maps/random/ardennes_forest.js +++ b/binaries/data/mods/public/maps/random/ardennes_forest.js @@ -87,7 +87,7 @@ for (var ix = 0; ix < mapSize; ix++) let h = g_Map.getHeight(position); if (h > heightRavineHill) { - addToClass(ix,iz,clHill); + clHill.add(position); // Add hill noise var x = ix / (mapSize + 1.0); @@ -253,8 +253,6 @@ for (let size of [scaleByMapSize(50, 800), scaleByMapSize(50, 400), scaleByMapSi Engine.SetProgress(50); var explorablePoints = []; -var playerClass = getTileClass(clPlayer); -var hillDecoClass = getTileClass(clHillDeco); for (var ix = 0; ix < mapSize; ix++) for (var iz = 0; iz < mapSize; iz++) @@ -262,11 +260,11 @@ for (var ix = 0; ix < mapSize; ix++) let position = new Vector2D(ix, iz); let h = g_Map.getHeight(position); - if(h > 15 && h < 45 && playerClass.countMembersInRadius(ix, iz, 1) == 0) + if (h > 15 && h < 45 && clPlayer.countMembersInRadius(ix, iz, 1) == 0) explorablePoints.push(position); if (h > 35 && randBool(0.1) || - h < 15 && randBool(0.05) && hillDecoClass.countMembersInRadius(ix, iz, 1) == 0) + h < 15 && randBool(0.05) && clHillDeco.countMembersInRadius(ix, iz, 1) == 0) placeObject(Vector2D.add(position, new Vector2D(1, 1).mult(randFloat(0, 1))), pickRandom(aTrees), 0, randomAngle()); } diff --git a/binaries/data/mods/public/maps/random/corsica.js b/binaries/data/mods/public/maps/random/corsica.js index 070b86770f..2a23d943e1 100644 --- a/binaries/data/mods/public/maps/random/corsica.js +++ b/binaries/data/mods/public/maps/random/corsica.js @@ -276,16 +276,16 @@ for (let mapX = 0; mapX < mapSize; ++mapX) createTerrain(terrain).place(position); if (terrain == tCliffs || terrain == tSteepCliffs) - addToClass(mapX, mapZ, clCliffs); + clCliffs.add(position); } function getCosricaSardiniaTerrain(mapX, mapZ) { let position = new Vector2D(mapX, mapZ); - let isWater = getTileClass(clWater).countMembersInRadius(mapX, mapZ, 3); - let isShore = getTileClass(clShore).countMembersInRadius(mapX, mapZ, 2); - let isPassage = getTileClass(clPassage).countMembersInRadius(mapX, mapZ, 2); - let isSettlement = getTileClass(clSettlement).countMembersInRadius(mapX, mapZ, 2); + let isWater = clWater.countMembersInRadius(mapX, mapZ, 3); + let isShore = clShore.countMembersInRadius(mapX, mapZ, 2); + let isPassage = clPassage.countMembersInRadius(mapX, mapZ, 2); + let isSettlement = clSettlement.countMembersInRadius(mapX, mapZ, 2); if (isSettlement) return undefined; diff --git a/binaries/data/mods/public/maps/random/danubius.js b/binaries/data/mods/public/maps/random/danubius.js index f00c060e25..c71919b667 100644 --- a/binaries/data/mods/public/maps/random/danubius.js +++ b/binaries/data/mods/public/maps/random/danubius.js @@ -381,15 +381,15 @@ paintRiver({ // Distinguish left and right shoreline if (0 < height && height < 1 && position.y > ShorelineDistance && position.y < mapSize - ShorelineDistance) - addToClass(position.x, position.y, clShore[position.x < mapCenter.x ? 0 : 1]); + clShore[position.x < mapCenter.x ? 0 : 1].add(position); }, "landFunc": (position, shoreDist1, shoreDist2) => { if (shoreDist1 > 0) - addToClass(position.x, position.y, clLand[0]); + clLand[0].add(position); if (shoreDist2 < 0) - addToClass(position.x, position.y, clLand[1]); + clLand[1].add(position); } }); Engine.SetProgress(30); @@ -712,7 +712,7 @@ for (let i = 0; i < 2; ++i) 1); log("Creating patrol points for land attackers..."); -addToClass(mapCenter.x, mapCenter.y, clMiddle); +clMiddle.add(mapCenter); log("Creating triggerpoint to allow the triggerscript to determine the river direction..."); placeObject(Vector2D.add(mapCenter, new Vector2D(0, 1).rotate(startAngle)), triggerPointRiverDirection, 0, 0); diff --git a/binaries/data/mods/public/maps/random/deep_forest.js b/binaries/data/mods/public/maps/random/deep_forest.js index 3ee139520e..6356af4252 100644 --- a/binaries/data/mods/public/maps/random/deep_forest.js +++ b/binaries/data/mods/public/maps/random/deep_forest.js @@ -148,7 +148,7 @@ Engine.SetProgress(60); log("Placing temple..."); placeObject(mapCenter, templateTemple, 0, randomAngle()); -addToClass(mapCenter.x, mapCenter.y, clBaseResource); +clBaseResource.add(mapCenter); log("Creating central mountain..."); createArea( diff --git a/binaries/data/mods/public/maps/random/fortress.js b/binaries/data/mods/public/maps/random/fortress.js index cfb69d006f..3d36a2f06d 100644 --- a/binaries/data/mods/public/maps/random/fortress.js +++ b/binaries/data/mods/public/maps/random/fortress.js @@ -111,7 +111,7 @@ for (let i = 0; i < numPlayers; ++i) ty - tx - minBoundY + minBoundX < tilesSize) { createTerrain(tRoad).place(position); - addToClass(tx, ty, clPlayer); + clPlayer.add(position); } } diff --git a/binaries/data/mods/public/maps/random/guadalquivir_river.js b/binaries/data/mods/public/maps/random/guadalquivir_river.js index d0a93cad9a..ebfb8ae70a 100644 --- a/binaries/data/mods/public/maps/random/guadalquivir_river.js +++ b/binaries/data/mods/public/maps/random/guadalquivir_river.js @@ -125,7 +125,7 @@ paintRiver({ "meanderShort": 12, "meanderLong": 0, "waterFunc": (position, height, z) => { - addToClass(position.x, position.y, clRiver); + clRiver.add(position); createTerrain(tWater).place(position); if (height < heightShallow && ( @@ -134,7 +134,7 @@ paintRiver({ z > 0.7 && z < 0.8)) { g_Map.setHeight(position, heightShallow); - addToClass(position.x, position.y, clShallow); + clShallow.add(position); } } }); diff --git a/binaries/data/mods/public/maps/random/hyrcanian_shores.js b/binaries/data/mods/public/maps/random/hyrcanian_shores.js index ff7a84a0ee..cbf2f3b0b4 100644 --- a/binaries/data/mods/public/maps/random/hyrcanian_shores.js +++ b/binaries/data/mods/public/maps/random/hyrcanian_shores.js @@ -110,12 +110,12 @@ paintRiver({ "landFunc": (position, shoreDist1, shoreDist2) => { if (waterPosition + shoreDist1 > highlandsPosition) - addToClass(position.x, position.y, clHighlands); + clHighlands.add(position); }, "waterFunc": (position, height, riverFraction) => { if (height < heightShore2) - addToClass(position.x, position.y, clWater); + clWater.add(position); createTerrain(height < heightShore1 ? tWater : tShore).place(position); } diff --git a/binaries/data/mods/public/maps/random/india.js b/binaries/data/mods/public/maps/random/india.js index b421de9f39..d1e8c6bd02 100644 --- a/binaries/data/mods/public/maps/random/india.js +++ b/binaries/data/mods/public/maps/random/india.js @@ -123,7 +123,7 @@ for (let i = 0; i < scaleByMapSize(12, 30); ++i) if (avoidClasses(clPlayer, 30, clRock, 25, clWater, 10).allows(position)) { createStoneMineFormation(position, oStoneSmall, tDirt4); - addToClass(position.x, position.y, clRock); + clRock.add(position); } } diff --git a/binaries/data/mods/public/maps/random/kerala.js b/binaries/data/mods/public/maps/random/kerala.js index d86d83f2b9..fd906545c1 100644 --- a/binaries/data/mods/public/maps/random/kerala.js +++ b/binaries/data/mods/public/maps/random/kerala.js @@ -106,10 +106,10 @@ paintRiver({ "meanderLong": 0, "landFunc": (position, shoreDist1, shoreDist2) => { if (waterPosition + shoreDist1 > mountainPosition) - addToClass(position.x, position.y, clMountains); + clMountains.add(position); }, "waterFunc": (position, height, riverFraction) => { - addToClass(position.x, position.y, clWater); + clWater.add(position); } }); diff --git a/binaries/data/mods/public/maps/random/latium.js b/binaries/data/mods/public/maps/random/latium.js index 228d6c8c67..bbde3e8a59 100644 --- a/binaries/data/mods/public/maps/random/latium.js +++ b/binaries/data/mods/public/maps/random/latium.js @@ -115,7 +115,7 @@ for (let x of [mapBounds.left, mapBounds.right]) "meanderShort": 0, "meanderLong": 0, "waterFunc": (position, height, z) => { - addToClass(position.x, position.y, clWater); + clWater.add(position); } }); Engine.SetProgress(10); @@ -241,13 +241,13 @@ for (var ix = 0; ix < mapSize; ix++) t = tBeachGrass; if (minH < 0) - addToClass(ix, iz, clWater); + clWater.add(position); // cliffs if (diffH > 2.9 && minH > -7) { t = tCliff; - addToClass(ix, iz, clCliff); + clCliff.add(position); } else if (diffH > 2.5 && minH > -5 || maxH - minAdjHeight > 2.9 && minH > 0) { @@ -258,12 +258,12 @@ for (var ix = 0; ix < mapSize; ix++) else t = [tDirtCliff, tGrassCliff, tGrassCliff, tGrassRock, tCliff]; - addToClass(ix, iz, clCliff); + clCliff.add(position); } // Don't place resources onto potentially impassable mountains if (minH >= 20) - addToClass(ix, iz, clCliff); + clCliff.add(position); // forests if (g_Map.getHeight(position) < 11 && diffH < 2 && minH > 1) @@ -284,12 +284,12 @@ for (var ix = 0; ix < mapSize; ix++) else t = pPineForest; - addToClass(ix, iz, clForest); + clForest.add(position); } else if (minH < 4) { t = pPalmForest; - addToClass(ix, iz, clForest); + clForest.add(position); } } } diff --git a/binaries/data/mods/public/maps/random/oasis.js b/binaries/data/mods/public/maps/random/oasis.js index 4d3715410a..ee966abce4 100644 --- a/binaries/data/mods/public/maps/random/oasis.js +++ b/binaries/data/mods/public/maps/random/oasis.js @@ -308,7 +308,7 @@ for (var sandx = 0; sandx < mapSize; sandx += 4) createObjectGroup(group, 0); } - if (getTileClass(clPassage).countMembersInRadius(sandx, sandz, 2) > 0) + if (clPassage.countMembersInRadius(sandx, sandz, 2)) { if (randBool(0.4)) { diff --git a/binaries/data/mods/public/maps/random/pyrenean_sierra.js b/binaries/data/mods/public/maps/random/pyrenean_sierra.js index c60193a51e..3ad492b9c2 100644 --- a/binaries/data/mods/public/maps/random/pyrenean_sierra.js +++ b/binaries/data/mods/public/maps/random/pyrenean_sierra.js @@ -244,7 +244,7 @@ for (let ix = 1; ix < mapSize - 1; ++ix) for (let iz = 1; iz < mapSize - 1; ++iz) { let position = new Vector2D(ix, iz); - if (g_Map.validHeight(position) && getTileClass(clPyrenneans).countMembersInRadius(ix, iz, 1)) + if (g_Map.validHeight(position) && clPyrenneans.countMembersInRadius(ix, iz, 1)) { let height = g_Map.getHeight(position); let index = 1 / (1 + Math.max(0, height / 7)); @@ -280,7 +280,7 @@ for (let ix = 1; ix < mapSize - 1; ++ix) for (let iz = 1; iz < mapSize - 1; ++iz) { let position = new Vector2D(ix, iz); - if (g_Map.inMapBounds(position) && getTileClass(clPyrenneans).countMembersInRadius(ix, iz, 1)) + if (g_Map.inMapBounds(position) && clPyrenneans.countMembersInRadius(ix, iz, 1)) { let heightNeighbor = g_Map.getAverageHeight(position); let index = 1 / (1 + Math.max(0, (g_Map.getHeight(position) - 10) / 7)); @@ -303,7 +303,7 @@ for (let ix = 1; ix < mapSize - 1; ++ix) for (let iz = 1; iz < mapSize - 1; ++iz) { let position = new Vector2D(ix, iz); - if (!g_Map.inMapBounds(position) || !getTileClass(clWater).countMembersInRadius(ix, iz, smoothDist)) + if (!g_Map.inMapBounds(position) || !clWater.countMembersInRadius(ix, iz, smoothDist)) continue; let averageHeight = 0; let todivide = 0; @@ -360,7 +360,7 @@ for (let x = 0; x < mapSize; ++x) let height = g_Map.getHeight(position); let heightDiff = g_Map.getSlope(position); - if (getTileClass(clPyrenneans).countMembersInRadius(x, z, 2)) + if (clPyrenneans.countMembersInRadius(x, z, 2)) { let layer = terrainPerHeight.find(layer => height < layer.maxHeight); createTerrain(heightDiff > layer.steepness ? layer.terrainSteep : layer.terrainGround).place(position); @@ -376,10 +376,10 @@ function getShoreTerrain(height, heightDiff, x, z) if (height <= -14) return tWater; - if (height <= -2 && getTileClass(clWater).countMembersInRadius(x, z, 2)) + if (height <= -2 && clWater.countMembersInRadius(x, z, 2)) return heightDiff < 2.5 ? tSand : tMidRangeCliffs; - if (height <= 0 && getTileClass(clWater).countMembersInRadius(x, z, 3)) + if (height <= 0 && clWater.countMembersInRadius(x, z, 3)) return heightDiff < 2.5 ? tSandTransition : tMidRangeCliffs; return undefined; diff --git a/binaries/data/mods/public/maps/random/rivers.js b/binaries/data/mods/public/maps/random/rivers.js index 7975fe5ca5..eb6bb25e95 100644 --- a/binaries/data/mods/public/maps/random/rivers.js +++ b/binaries/data/mods/public/maps/random/rivers.js @@ -131,7 +131,7 @@ for (let i = 0; i < numRivers; ++i) "meanderLong": 0, "waterFunc": (position, height, riverFraction) => { - addToClass(position.x, position.y, clWater); + clWater.add(position); let isShallow = height < heightShallows && riverFraction > shallowLocation && @@ -146,7 +146,7 @@ for (let i = 0; i < numRivers; ++i) createTerrain(height >= 0 ? tShore : tWater).place(position); if (isShallow) - addToClass(position.x, position.y, clShallow); + clShallow.add(position); } }); } diff --git a/binaries/data/mods/public/maps/random/rmgen/constraint.js b/binaries/data/mods/public/maps/random/rmgen/constraint.js index 3d2f4928d7..1c83e6b869 100644 --- a/binaries/data/mods/public/maps/random/rmgen/constraint.js +++ b/binaries/data/mods/public/maps/random/rmgen/constraint.js @@ -59,9 +59,9 @@ AvoidTextureConstraint.prototype.allows = function(position) /** * The AvoidTileClassConstraint is met if there are no tiles marked with the given TileClass within the given radius of the tile. */ -function AvoidTileClassConstraint(tileClassID, distance) +function AvoidTileClassConstraint(tileClass, distance) { - this.tileClass = getTileClass(tileClassID); + this.tileClass = tileClass; this.distance = distance; } @@ -73,9 +73,9 @@ AvoidTileClassConstraint.prototype.allows = function(position) /** * The StayInTileClassConstraint is met if every tile within the given radius of the tile is marked with the given TileClass. */ -function StayInTileClassConstraint(tileClassID, distance) +function StayInTileClassConstraint(tileClass, distance) { - this.tileClass = getTileClass(tileClassID); + this.tileClass = tileClass; this.distance = distance; } @@ -89,9 +89,9 @@ StayInTileClassConstraint.prototype.allows = function(position) * tiles not marked with the given TileClass within distanceInside of the tile and * tiles marked with the given TileClass within distanceOutside of the tile. */ -function BorderTileClassConstraint(tileClassID, distanceInside, distanceOutside) +function BorderTileClassConstraint(tileClass, distanceInside, distanceOutside) { - this.tileClass = getTileClass(tileClassID); + this.tileClass = tileClass; this.distanceInside = distanceInside; this.distanceOutside = distanceOutside; } diff --git a/binaries/data/mods/public/maps/random/rmgen/gaia_terrain.js b/binaries/data/mods/public/maps/random/rmgen/gaia_terrain.js index 95e5c2aeb1..fdf1822ae7 100644 --- a/binaries/data/mods/public/maps/random/rmgen/gaia_terrain.js +++ b/binaries/data/mods/public/maps/random/rmgen/gaia_terrain.js @@ -199,7 +199,7 @@ function createMountain(maxHeight, minRadius, maxRadius, numCircles, constraints createTerrain(terrain).place(position); if (tileClass !== undefined) - addToClass(ix, iz, tileClass); + tileClass.add(position); } } } @@ -566,7 +566,7 @@ function createPassage(args) passageHeight); if (args.tileClass !== undefined) - addToClass(location.x, location.y, args.tileClass); + args.tileClass.add(location); if (args.edgeTerrain && smoothDistance > 0) createTerrain(args.edgeTerrain).place(location); diff --git a/binaries/data/mods/public/maps/random/rmgen/group.js b/binaries/data/mods/public/maps/random/rmgen/group.js index f566bafc28..f88cb6af6b 100644 --- a/binaries/data/mods/public/maps/random/rmgen/group.js +++ b/binaries/data/mods/public/maps/random/rmgen/group.js @@ -46,11 +46,13 @@ SimpleGroup.prototype.place = function(player, constraint) // Add all objects to the map for (let obj of resultObjs) { - if (g_Map.validTile(new Vector2D(obj.position.x, obj.position.z))) + let position = new Vector2D(obj.position.x, obj.position.z); + + if (g_Map.validTile(position)) g_Map.addObject(obj); if (this.tileClass !== undefined) - getTileClass(this.tileClass).add(Math.floor(obj.position.x), Math.floor(obj.position.z)); + this.tileClass.add(position.clone().floor()); } return resultObjs; diff --git a/binaries/data/mods/public/maps/random/rmgen/library.js b/binaries/data/mods/public/maps/random/rmgen/library.js index 7806052d69..b320277790 100644 --- a/binaries/data/mods/public/maps/random/rmgen/library.js +++ b/binaries/data/mods/public/maps/random/rmgen/library.js @@ -189,14 +189,6 @@ function placeObject(position, type, player, angle) g_Map.addObject(new Entity(type, player, position.x, position.y, angle)); } -function getTileClass(id) -{ - if (!g_Map.validClass(id)) - return undefined; - - return g_Map.tileClasses[id]; -} - /** * Constructs a new Area shaped by the Placer meeting the Constraints and calls the Painters there. * Supports both Centered and Non-Centered Placers. @@ -250,28 +242,6 @@ function createObjectGroup(group, player, constraints) return group.place(player, new AndConstraint(constraints)); } -/** - * Add point to given class by id - */ -function addToClass(x, z, id) -{ - let tileClass = getTileClass(id); - - if (tileClass !== null) - tileClass.add(x, z); -} - -/** - * Remove point from the given class by id - */ -function removeFromClass(x, z, id) -{ - let tileClass = getTileClass(id); - - if (tileClass !== null) - tileClass.remove(x, z); -} - /** * Create an avoid constraint for the given classes by the given distances */ diff --git a/binaries/data/mods/public/maps/random/rmgen/painter.js b/binaries/data/mods/public/maps/random/rmgen/painter.js index 50c4a15b87..5b0c5541dd 100644 --- a/binaries/data/mods/public/maps/random/rmgen/painter.js +++ b/binaries/data/mods/public/maps/random/rmgen/painter.js @@ -6,29 +6,29 @@ /** * Marks the affected area with the given tileclass. */ -function TileClassPainter(tileClassID) +function TileClassPainter(tileClass) { - this.tileClass = getTileClass(tileClassID); + this.tileClass = tileClass; } TileClassPainter.prototype.paint = function(area) { for (let point of area.points) - this.tileClass.add(point.x, point.y); + this.tileClass.add(point); }; /** * Removes the given tileclass from a given area. */ -function TileClassUnPainter(tileClassID) +function TileClassUnPainter(tileClass) { - this.tileClass = getTileClass(tileClassID); + this.tileClass = tileClass; } TileClassUnPainter.prototype.paint = function(area) { for (let point of area.points) - this.tileClass.remove(point.x, point.y); + this.tileClass.remove(point); }; /** diff --git a/binaries/data/mods/public/maps/random/rmgen/player.js b/binaries/data/mods/public/maps/random/rmgen/player.js index aed3e7cccc..96ba6be9d4 100644 --- a/binaries/data/mods/public/maps/random/rmgen/player.js +++ b/binaries/data/mods/public/maps/random/rmgen/player.js @@ -189,15 +189,9 @@ function defaultPlayerBaseRadius() */ function addCivicCenterAreaToClass(position, tileClass) { - let pos = position.clone().round(); - - addToClass(pos.x, pos.y, tileClass); - - addToClass(pos.x, pos.y + 5, tileClass); - addToClass(pos.x, pos.y - 5, tileClass); - - addToClass(pos.x + 5, pos.y, tileClass); - addToClass(pos.x - 5, pos.y, tileClass); + createArea( + new ClumpPlacer(diskArea(5), 1, 1, Infinity, position), + new TileClassPainter(tileClass)); } /** @@ -329,7 +323,7 @@ function placePlayerBaseMines(args) if (args.types[i].type && args.types[i].type == "stone_formation") { createStoneMineFormation(pos[i], args.types[i].template, args.types[i].terrain); - addToClass(pos[i].x, pos[i].y, args.BaseResourceClass); + args.BaseResourceClass.add(pos[i]); continue; } diff --git a/binaries/data/mods/public/maps/random/rmgen/random_map.js b/binaries/data/mods/public/maps/random/rmgen/random_map.js index c338fe5a82..7a0c52b75d 100644 --- a/binaries/data/mods/public/maps/random/rmgen/random_map.js +++ b/binaries/data/mods/public/maps/random/rmgen/random_map.js @@ -58,9 +58,6 @@ function RandomMap(baseHeight, baseTerrain) // Array of Entities this.objects = []; - // Array of integers - this.tileClasses = []; - this.areaID = 0; // Starting entity ID, arbitrary number to leave some space for player entities @@ -160,14 +157,6 @@ RandomMap.prototype.validHeight = function(position) return position.x <= this.size && position.y <= this.size; }; -/** - * Tests if there is a tileclass with the given ID. - */ -RandomMap.prototype.validClass = function(tileClassID) -{ - return tileClassID >= 0 && tileClassID < this.tileClasses.length; -}; - /** * Returns the name of the texture of the given tile. */ @@ -250,14 +239,9 @@ RandomMap.prototype.createArea = function(points) return new Area(points, areaID); }; -/** - * Returns an unused tileclass ID. - */ RandomMap.prototype.createTileClass = function() { - let newID = this.tileClasses.length; - this.tileClasses.push(new TileClass(this.size, newID)); - return newID; + return new TileClass(this.size); }; /** diff --git a/binaries/data/mods/public/maps/random/rmgen/tileclass.js b/binaries/data/mods/public/maps/random/rmgen/tileclass.js index 65120d1a29..5f21361e37 100644 --- a/binaries/data/mods/public/maps/random/rmgen/tileclass.js +++ b/binaries/data/mods/public/maps/random/rmgen/tileclass.js @@ -60,44 +60,36 @@ RangeOp.prototype.get = function(start, end) return ret; }; -////////////////////////////////////////////////////////////////////// -// TileClass -// -// Class for representing terrain types and containing all the tiles -// within that type -// -////////////////////////////////////////////////////////////////////// - -function TileClass(size, id) +/** + * Class that can be tagged to any tile. Can be used to constrain placers and entity placement to given areas. + */ +function TileClass(size) { - this.id = id; this.size = size; this.inclusionCount = []; this.rangeCount = []; - for (var i=0; i < size; ++i) + for (let i=0; i < size; ++i) { this.inclusionCount[i] = new Int16Array(size); //int16 this.rangeCount[i] = new RangeOp(size); } } -TileClass.prototype.add = function(x, z) +TileClass.prototype.add = function(position) { - let position = new Vector2D(x, z); if (!this.inclusionCount[position.x][position.y] && g_Map.validTile(position)) - this.rangeCount[z].add(x, 1); + this.rangeCount[position.y].add(position.x, 1); - this.inclusionCount[x][z]++; + ++this.inclusionCount[position.x][position.y]; }; -TileClass.prototype.remove = function(x, z) +TileClass.prototype.remove = function(position) { - this.inclusionCount[x][z]--; - if(!this.inclusionCount[x][z]) - { - this.rangeCount[z].add(x, -1); - } + --this.inclusionCount[position.x][position.y]; + + if (!this.inclusionCount[position.x][position.y]) + this.rangeCount[position.y].add(position.x, -1); }; TileClass.prototype.countInRadius = function(cx, cy, radius, returnMembers) diff --git a/binaries/data/mods/public/maps/random/rmgen2/gaia.js b/binaries/data/mods/public/maps/random/rmgen2/gaia.js index b077c8bffc..46ef726697 100644 --- a/binaries/data/mods/public/maps/random/rmgen2/gaia.js +++ b/binaries/data/mods/public/maps/random/rmgen2/gaia.js @@ -996,7 +996,7 @@ function unreachableBluff(bb, corners, baseLine, endLine) function removeBluff(points) { for (let point of points) - addToClass(point.x, point.y, g_TileClasses.mountain); + g_TileClasses.mountain.add(point); } /** diff --git a/binaries/data/mods/public/maps/random/sahel.js b/binaries/data/mods/public/maps/random/sahel.js index a4b7e4573f..beb1be7a40 100644 --- a/binaries/data/mods/public/maps/random/sahel.js +++ b/binaries/data/mods/public/maps/random/sahel.js @@ -115,7 +115,7 @@ for (var i = 0; i < scaleByMapSize(12,30); ++i) if (avoidClasses(clPlayer, 30, clRock, 25, clWater, 10).allows(position)) { createStoneMineFormation(position, oStoneSmall, tDirt4); - addToClass(position.x, position.y, clRock); + clRock.add(position); } } diff --git a/binaries/data/mods/public/maps/random/survivalofthefittest.js b/binaries/data/mods/public/maps/random/survivalofthefittest.js index fd2ce6a8b8..66af74c93d 100644 --- a/binaries/data/mods/public/maps/random/survivalofthefittest.js +++ b/binaries/data/mods/public/maps/random/survivalofthefittest.js @@ -93,7 +93,7 @@ for (let i = 0; i < numPlayers; ++i) log("Placing treasure seeker woman..."); let femaleLocation = findLocationInDirectionBasedOnHeight(playerPosition[i], mapCenter, -3 , 3.5, 3).round(); - addToClass(femaleLocation.x, femaleLocation.y, clWomen); + clWomen.add(femaleLocation); placeObject(femaleLocation, oTreasureSeeker, playerIDs[i], playerAngle[i] + Math.PI); log("Placing attacker spawn point...."); @@ -102,8 +102,8 @@ for (let i = 0; i < numPlayers; ++i) log("Preventing mountains in the area between player and attackers..."); addCivicCenterAreaToClass(playerPosition[i], clPlayer); - addToClass(attacker[i].x, attacker[i].y, clPlayer); - addToClass(halfway[i].x, halfway[i].y, clPlayer); + clPlayer.add(attacker); + clPlayer.add(halfway); } Engine.SetProgress(20); diff --git a/binaries/data/mods/public/maps/random/the_nile.js b/binaries/data/mods/public/maps/random/the_nile.js index e69357587d..cc9cf95129 100644 --- a/binaries/data/mods/public/maps/random/the_nile.js +++ b/binaries/data/mods/public/maps/random/the_nile.js @@ -145,7 +145,7 @@ paintRiver({ "meanderLong": 50, "waterFunc": (position, height, riverFraction) => { - addToClass(position.x, position.y, clWater); + clWater.add(position); createTerrain(tShore).place(position); // Place river bushes @@ -165,7 +165,7 @@ paintRiver({ if (riv.left < +shoreDist1 && +shoreDist1 < riv.right || riv.left < -shoreDist2 && -shoreDist2 < riv.right) { - addToClass(position.x, position.y, riv.tileClass); + riv.tileClass.add(position); if (riv.terrain) createTerrain(riv.terrain).place(position); diff --git a/binaries/data/mods/public/maps/random/the_unknown/unknown_common.js b/binaries/data/mods/public/maps/random/the_unknown/unknown_common.js index 7cb900faff..90fc3cf10c 100644 --- a/binaries/data/mods/public/maps/random/the_unknown/unknown_common.js +++ b/binaries/data/mods/public/maps/random/the_unknown/unknown_common.js @@ -292,11 +292,11 @@ function unknownCentralSea() "meanderLong": 0, "waterFunc": (position, height, riverFraction) => { if (height < 0) - addToClass(position.x, position.y, clWater); + clWater.add(position); }, "landFunc": (position, shoreDist1, shoreDist2) => { g_Map.setHeight(position, 3.1); - addToClass(position.x, position.y, clLand); + clLand.add(position); } });