From aa54803c50cee405154c4b4a6433ea5354061ef5 Mon Sep 17 00:00:00 2001 From: DjWarmonger Date: Sun, 15 Jun 2014 08:48:46 +0200 Subject: [PATCH] Refactoring, clearing logs. --- lib/rmg/CMapGenerator.cpp | 1 - lib/rmg/CRmgTemplateZone.cpp | 41 ++++++++++++++++++++++++------------ lib/rmg/CRmgTemplateZone.h | 3 +++ 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/lib/rmg/CMapGenerator.cpp b/lib/rmg/CMapGenerator.cpp index f64e79e9e..cf2c65636 100644 --- a/lib/rmg/CMapGenerator.cpp +++ b/lib/rmg/CMapGenerator.cpp @@ -219,7 +219,6 @@ void CMapGenerator::fillZones() { //make sure all connections are passable before creating borders it.second->createBorder(this); - it.second->fractalize(this); it.second->fill(this); } logGlobal->infoStream() << "Zones filled successfully"; diff --git a/lib/rmg/CRmgTemplateZone.cpp b/lib/rmg/CRmgTemplateZone.cpp index 20fae08b4..03926e9e3 100644 --- a/lib/rmg/CRmgTemplateZone.cpp +++ b/lib/rmg/CRmgTemplateZone.cpp @@ -817,13 +817,8 @@ bool CRmgTemplateZone::placeMines (CMapGenerator* gen) return true; } -bool CRmgTemplateZone::fill(CMapGenerator* gen) +bool CRmgTemplateZone::createRequiredObjects(CMapGenerator* gen) { - addAllPossibleObjects (gen); - initTownType(gen); - initTerrainType(gen); - placeMines(gen); - logGlobal->infoStream() << "Creating required objects"; for(const auto &obj : requiredObjects) { @@ -838,26 +833,33 @@ bool CRmgTemplateZone::fill(CMapGenerator* gen) logGlobal->traceStream() << "Place found"; placeObject(gen, obj.first, pos); - crunchPath (gen, pos, getPos(), id); //make sure pile is connected to the middle of zone + crunchPath (gen, pos, getPos(), id); //make sure object is connected to the middle of zone if (obj.second) { guardObject (gen, obj.first, obj.second); } } - const double res_mindist = 5; + return true; +} + +void CRmgTemplateZone::createTreasures(CMapGenerator* gen) +{ + const double minDistance = 3; - //TODO: just placeholder to chekc for possible locations do { int3 pos; - if ( ! findPlaceForTreasurePile(gen, 3, pos)) + if ( ! findPlaceForTreasurePile(gen, minDistance, pos)) { break; } createTreasurePile (gen, pos); } while(true); +} +void CRmgTemplateZone::createObstacles(CMapGenerator* gen) +{ auto sel = gen->editManager->getTerrainSelection(); sel.clearSelection(); for (auto tile : tileinfo) @@ -874,8 +876,19 @@ bool CRmgTemplateZone::fill(CMapGenerator* gen) placeObject(gen, obj, tile); } } - //logGlobal->infoStream() << boost::format("Filling %d with ROCK") % sel.getSelectedItems().size(); - //gen->editManager->drawTerrain(ETerrainType::ROCK, &gen->gen); +} + +bool CRmgTemplateZone::fill(CMapGenerator* gen) +{ + addAllPossibleObjects (gen); + initTownType(gen); + initTerrainType(gen); + placeMines(gen); + createRequiredObjects(gen); + fractalize(gen); //after required objects are created and linked with their own paths + createTreasures(gen); + createObstacles(gen); + logGlobal->infoStream() << boost::format ("Zone %d filled successfully") %id; return true; } @@ -1017,12 +1030,12 @@ void CRmgTemplateZone::checkAndPlaceObject(CMapGenerator* gen, CGObjectInstance* gen->map->addBlockVisTiles(object); gen->editManager->insertObject(object, pos); - logGlobal->traceStream() << boost::format ("Successfully inserted object (%d,%d) at pos %s") %object->ID %object->subID %pos(); + //logGlobal->traceStream() << boost::format ("Successfully inserted object (%d,%d) at pos %s") %object->ID %object->subID %pos(); } void CRmgTemplateZone::placeObject(CMapGenerator* gen, CGObjectInstance* object, const int3 &pos) { - logGlobal->traceStream() << boost::format("Inserting object at %d %d") % pos.x % pos.y; + //logGlobal->traceStream() << boost::format("Inserting object at %d %d") % pos.x % pos.y; checkAndPlaceObject (gen, object, pos); diff --git a/lib/rmg/CRmgTemplateZone.h b/lib/rmg/CRmgTemplateZone.h index bf1c15df1..44b53fd3f 100644 --- a/lib/rmg/CRmgTemplateZone.h +++ b/lib/rmg/CRmgTemplateZone.h @@ -136,6 +136,9 @@ public: void initTerrainType (CMapGenerator* gen); void createBorder(CMapGenerator* gen); void fractalize(CMapGenerator* gen); + bool createRequiredObjects(CMapGenerator* gen); + void createTreasures(CMapGenerator* gen); + void createObstacles(CMapGenerator* gen); bool crunchPath (CMapGenerator* gen, const int3 &src, const int3 &dst, TRmgTemplateZoneId zone, std::set* clearedTiles = nullptr); void setTotalDensity (ui16 val);