From 51495381ef74613615eddf663f6190116bf32927 Mon Sep 17 00:00:00 2001 From: DjWarmonger Date: Wed, 24 Dec 2014 15:07:20 +0100 Subject: [PATCH] Better obstacle shapes inside zones. --- lib/rmg/CRmgTemplateZone.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/rmg/CRmgTemplateZone.cpp b/lib/rmg/CRmgTemplateZone.cpp index 9aaa271e0..70b03fdf1 100644 --- a/lib/rmg/CRmgTemplateZone.cpp +++ b/lib/rmg/CRmgTemplateZone.cpp @@ -412,7 +412,7 @@ void CRmgTemplateZone::fractalize(CMapGenerator* gen) int totalDensity = 0; for (auto ti : treasureInfo) totalDensity =+ ti.density; - const float minDistance = totalDensity * 3; //squared + const float minDistance = totalDensity * 4; //squared for (auto tile : tileinfo) { @@ -481,7 +481,27 @@ void CRmgTemplateZone::fractalize(CMapGenerator* gen) freePaths.insert(tile); } - + //now block most distant tiles away from passages + + float blockDistance = minDistance * 0.6f; + + for (auto tile : possibleTiles) + { + bool closeTileFound = false; + + for (auto clearTile : freePaths) + { + float distance = tile.dist2dSQ(clearTile); + + if (distance < blockDistance) + { + closeTileFound = true; + break; + } + } + if (!closeTileFound) //this tile is far enough from passages + gen->setOccupied(tile, ETileType::BLOCKED); + } if (0) //enable to debug {