TownPlacer.h 981 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /*
  2. * TownPlacer.h, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #pragma once
  11. #include "../Zone.h"
  12. VCMI_LIB_NAMESPACE_BEGIN
  13. class ObjectManager;
  14. class CGTownInstance;
  15. class TownPlacer: public Modificator
  16. {
  17. public:
  18. MODIFICATOR(TownPlacer);
  19. void process() override;
  20. void init() override;
  21. int getTotalTowns() const;
  22. protected:
  23. void cleanupBoundaries(const rmg::Object & rmgObject);
  24. void addNewTowns(int count, bool hasFort, const PlayerColor & player, ObjectManager & manager);
  25. FactionID getRandomTownType(bool matchUndergroundType = false);
  26. FactionID getTownTypeFromHint(size_t hintIndex);
  27. void placeTowns(ObjectManager & manager);
  28. bool placeMines(ObjectManager & manager);
  29. int3 placeMainTown(ObjectManager & manager, CGTownInstance & town);
  30. protected:
  31. int totalTowns = 0;
  32. };
  33. VCMI_LIB_NAMESPACE_END