|
|
@@ -13,8 +13,6 @@
|
|
|
#include "RmgMap.h"
|
|
|
#include "Functions.h"
|
|
|
#include "TileInfo.h"
|
|
|
-#include "../mapping/CMap.h"
|
|
|
-#include "../CStopWatch.h"
|
|
|
#include "CMapGenerator.h"
|
|
|
#include "RmgPath.h"
|
|
|
|
|
|
@@ -303,109 +301,4 @@ void Zone::processModificators()
|
|
|
logGlobal->info("Zone %d filled successfully", getId());
|
|
|
}
|
|
|
|
|
|
-Modificator::Modificator(Zone & zone, RmgMap & map, CMapGenerator & generator) : zone(zone), map(map), generator(generator)
|
|
|
-{
|
|
|
-}
|
|
|
-
|
|
|
-void Modificator::setName(const std::string & n)
|
|
|
-{
|
|
|
- name = n;
|
|
|
-}
|
|
|
-
|
|
|
-const std::string & Modificator::getName() const
|
|
|
-{
|
|
|
- return name;
|
|
|
-}
|
|
|
-
|
|
|
-bool Modificator::isFinished() const
|
|
|
-{
|
|
|
- return finished;
|
|
|
-}
|
|
|
-
|
|
|
-void Modificator::run()
|
|
|
-{
|
|
|
- started = true;
|
|
|
- if(!finished)
|
|
|
- {
|
|
|
- for(auto * modificator : preceeders)
|
|
|
- {
|
|
|
- if(!modificator->started)
|
|
|
- modificator->run();
|
|
|
- }
|
|
|
- logGlobal->info("Modificator zone %d - %s - started", zone.getId(), getName());
|
|
|
- CStopWatch processTime;
|
|
|
- try
|
|
|
- {
|
|
|
- process();
|
|
|
- }
|
|
|
- catch(rmgException &e)
|
|
|
- {
|
|
|
- logGlobal->error("Modificator %s, exception: %s", getName(), e.what());
|
|
|
- }
|
|
|
-#ifdef RMG_DUMP
|
|
|
- dump();
|
|
|
-#endif
|
|
|
- finished = true;
|
|
|
- logGlobal->info("Modificator zone %d - %s - done (%d ms)", zone.getId(), getName(), processTime.getDiff());
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-void Modificator::dependency(Modificator * modificator)
|
|
|
-{
|
|
|
- if(modificator && modificator != this)
|
|
|
- {
|
|
|
- if(std::find(preceeders.begin(), preceeders.end(), modificator) == preceeders.end())
|
|
|
- preceeders.push_back(modificator);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-void Modificator::postfunction(Modificator * modificator)
|
|
|
-{
|
|
|
- if(modificator && modificator != this)
|
|
|
- {
|
|
|
- if(std::find(modificator->preceeders.begin(), modificator->preceeders.end(), this) == modificator->preceeders.end())
|
|
|
- modificator->preceeders.push_back(this);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-void Modificator::dump()
|
|
|
-{
|
|
|
- std::ofstream out(boost::to_string(boost::format("seed_%d_modzone_%d_%s.txt") % generator.getRandomSeed() % zone.getId() % getName()));
|
|
|
- auto & mapInstance = map.map();
|
|
|
- int levels = mapInstance.levels();
|
|
|
- int width = mapInstance.width;
|
|
|
- int height = mapInstance.height;
|
|
|
- for(int z = 0; z < levels; z++)
|
|
|
- {
|
|
|
- for(int j=0; j<height; j++)
|
|
|
- {
|
|
|
- for(int i=0; i<width; i++)
|
|
|
- {
|
|
|
- out << dump(int3(i, j, z));
|
|
|
- }
|
|
|
- out << std::endl;
|
|
|
- }
|
|
|
- out << std::endl;
|
|
|
- }
|
|
|
- out << std::endl;
|
|
|
-}
|
|
|
-
|
|
|
-char Modificator::dump(const int3 & t)
|
|
|
-{
|
|
|
- if(zone.freePaths().contains(t))
|
|
|
- return '.'; //free path
|
|
|
- if(zone.areaPossible().contains(t))
|
|
|
- return ' '; //possible
|
|
|
- if(zone.areaUsed().contains(t))
|
|
|
- return 'U'; //used
|
|
|
- if(zone.area().contains(t))
|
|
|
- {
|
|
|
- if(map.shouldBeBlocked(t))
|
|
|
- return '#'; //obstacle
|
|
|
- else
|
|
|
- return '^'; //visitable points?
|
|
|
- }
|
|
|
- return '?';
|
|
|
-}
|
|
|
-
|
|
|
VCMI_LIB_NAMESPACE_END
|