1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-07-15 01:24:45 +02:00

Remove dependencies of surface and underground zones

This commit is contained in:
Tomasz Zieliński
2023-06-10 14:58:12 +02:00
parent b65870f31e
commit 8ef25155df
7 changed files with 40 additions and 10 deletions

View File

@ -12,7 +12,7 @@
#include "ObstaclePlacer.h" #include "ObstaclePlacer.h"
#include "ObjectManager.h" #include "ObjectManager.h"
#include "TreasurePlacer.h" #include "TreasurePlacer.h"
#include "RockPlacer.h" #include "RockFiller.h"
#include "WaterRoutes.h" #include "WaterRoutes.h"
#include "WaterProxy.h" #include "WaterProxy.h"
#include "RoadPlacer.h" #include "RoadPlacer.h"
@ -94,10 +94,16 @@ void ObstaclePlacer::init()
{ {
DEPENDENCY(ObjectManager); DEPENDENCY(ObjectManager);
DEPENDENCY(TreasurePlacer); DEPENDENCY(TreasurePlacer);
DEPENDENCY(RoadPlacer);
if (zone.isUnderground())
{
DEPENDENCY(RockFiller);
}
else
{
DEPENDENCY(WaterRoutes); DEPENDENCY(WaterRoutes);
DEPENDENCY(WaterProxy); DEPENDENCY(WaterProxy);
DEPENDENCY(RoadPlacer); }
DEPENDENCY_ALL(RockPlacer);
} }
bool ObstaclePlacer::isInTheMap(const int3& tile) bool ObstaclePlacer::isInTheMap(const int3& tile)

View File

@ -82,7 +82,10 @@ void RiverPlacer::process()
void RiverPlacer::init() void RiverPlacer::init()
{ {
if (!zone.isUnderground())
{
DEPENDENCY_ALL(WaterProxy); DEPENDENCY_ALL(WaterProxy);
}
DEPENDENCY(ObjectManager); DEPENDENCY(ObjectManager);
DEPENDENCY(ObstaclePlacer); DEPENDENCY(ObstaclePlacer);
} }

View File

@ -12,6 +12,7 @@
#include "RoadPlacer.h" #include "RoadPlacer.h"
#include "ObjectManager.h" #include "ObjectManager.h"
#include "ObstaclePlacer.h" #include "ObstaclePlacer.h"
#include "RockFiller.h"
#include "../Functions.h" #include "../Functions.h"
#include "../CMapGenerator.h" #include "../CMapGenerator.h"
#include "../threadpool/MapProxy.h" #include "../threadpool/MapProxy.h"
@ -28,6 +29,14 @@ void RoadPlacer::process()
connectRoads(); connectRoads();
} }
void RoadPlacer::init()
{
if (zone.isUnderground())
{
DEPENDENCY_ALL(RockFiller);
}
}
rmg::Area & RoadPlacer::areaForRoads() rmg::Area & RoadPlacer::areaForRoads()
{ {
return areaRoads; return areaRoads;

View File

@ -19,6 +19,7 @@ public:
MODIFICATOR(RoadPlacer); MODIFICATOR(RoadPlacer);
void process() override; void process() override;
void init();
char dump(const int3 &) override; char dump(const int3 &) override;
void addRoadNode(const int3 & node); void addRoadNode(const int3 & node);

View File

@ -13,7 +13,6 @@
#include "RockPlacer.h" #include "RockPlacer.h"
#include "TreasurePlacer.h" #include "TreasurePlacer.h"
#include "ObjectManager.h" #include "ObjectManager.h"
#include "RoadPlacer.h"
#include "RiverPlacer.h" #include "RiverPlacer.h"
#include "../RmgMap.h" #include "../RmgMap.h"
#include "../CMapGenerator.h" #include "../CMapGenerator.h"
@ -63,7 +62,6 @@ void RockFiller::processMap()
void RockFiller::init() void RockFiller::init()
{ {
DEPENDENCY_ALL(RockPlacer); DEPENDENCY_ALL(RockPlacer);
POSTFUNCTION_ALL(RoadPlacer);
} }
char RockFiller::dump(const int3 & t) char RockFiller::dump(const int3 & t)

View File

@ -67,7 +67,17 @@ void RockPlacer::postProcess()
void RockPlacer::init() void RockPlacer::init()
{ {
DEPENDENCY_ALL(TreasurePlacer); for (const auto& zone : map.getZones())
{
if (zone.second->isUnderground())
{
auto * tp = zone.second->getModificator<TreasurePlacer>();
if (tp)
{
dependency(tp);
}
}
}
} }
char RockPlacer::dump(const int3 & t) char RockPlacer::dump(const int3 & t)

View File

@ -82,9 +82,12 @@ void WaterProxy::process()
void WaterProxy::init() void WaterProxy::init()
{ {
for(auto & z : map.getZones()) for(auto & z : map.getZones())
{
if (!zone.isUnderground())
{ {
dependency(z.second->getModificator<TownPlacer>()); dependency(z.second->getModificator<TownPlacer>());
dependency(z.second->getModificator<WaterAdopter>()); dependency(z.second->getModificator<WaterAdopter>());
}
postfunction(z.second->getModificator<ConnectionsPlacer>()); postfunction(z.second->getModificator<ConnectionsPlacer>());
postfunction(z.second->getModificator<ObjectManager>()); postfunction(z.second->getModificator<ObjectManager>());
} }