Prechádzať zdrojové kódy

Allow underground zones to connect more easily. Regression: Obstacles spawn at zone boundaries.

DjWarmonger 11 rokov pred
rodič
commit
866cd6f540

+ 12 - 10
lib/rmg/CRmgTemplateZone.cpp

@@ -360,16 +360,18 @@ std::set<int3> CRmgTemplateZone::getTileInfo () const
 	return tileinfo;
 }
 
-void CRmgTemplateZone::discardDistantTiles (CMapGenerator* gen, int distance)
-{
-	for (auto tile : tileinfo)
-	{
-		if (tile.dist2d(this->pos) > distance)
-		{
-			gen->setOccupied(tile, ETileType::USED);
-			//gen->setOccupied(tile, ETileType::BLOCKED); //fixme: crash at rendering?
-		}
-	}
+void CRmgTemplateZone::discardDistantTiles (CMapGenerator* gen, float distance)
+{
+	//TODO: mark tiles beyond zone as unavailable, but allow to connect with adjacent zones
+
+	//for (auto tile : tileinfo)
+	//{
+	//	if (tile.dist2d(this->pos) > distance)
+	//	{
+	//		gen->setOccupied(tile, ETileType::USED);
+	//		//gen->setOccupied(tile, ETileType::BLOCKED); //fixme: crash at rendering?
+	//	}
+	//}
 	vstd::erase_if (tileinfo, [distance, this](const int3 &tile) -> bool
 	{
 		return tile.dist2d(this->pos) > distance;

+ 1 - 1
lib/rmg/CRmgTemplateZone.h

@@ -129,7 +129,7 @@ public:
 
 	void addTile (const int3 &pos);
 	std::set<int3> getTileInfo () const;
-	void discardDistantTiles (CMapGenerator* gen, int distance);
+	void discardDistantTiles (CMapGenerator* gen, float distance);
 
 	void addRequiredObject(CGObjectInstance * obj, si32 guardStrength=0);
 	bool addMonster(CMapGenerator* gen, int3 &pos, si32 strength);

+ 1 - 1
lib/rmg/CZonePlacer.cpp

@@ -266,7 +266,7 @@ void CZonePlacer::assignZones(shared_ptr<CMapGenOptions> mapGenOptions)
 		//TODO: similiar for islands
 		if (zone.second->getPos().z)
 		{
-			zone.second->discardDistantTiles(gen, zone.second->getSize());
+			zone.second->discardDistantTiles(gen, zone.second->getSize() + 1);
 
 			//make sure that terrain inside zone is not a rock
 			//FIXME: reorder actions?