mapsettings.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * mapsettings.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 <QDialog>
  12. #include "mapcontroller.h"
  13. #include "../lib/mapping/CMap.h"
  14. namespace Ui {
  15. class MapSettings;
  16. }
  17. class MapSettings : public QDialog
  18. {
  19. Q_OBJECT
  20. public:
  21. explicit MapSettings(MapController & controller, QWidget *parent = nullptr);
  22. ~MapSettings();
  23. private slots:
  24. void on_pushButton_clicked();
  25. void on_victoryComboBox_currentIndexChanged(int index);
  26. void on_loseComboBox_currentIndexChanged(int index);
  27. void on_heroLevelLimitCheck_toggled(bool checked);
  28. void on_modResolution_map_clicked();
  29. void on_modResolution_full_clicked();
  30. void on_treeMods_itemChanged(QTreeWidgetItem *item, int column);
  31. private:
  32. std::string getTownName(int townObjectIdx);
  33. std::string getHeroName(int townObjectIdx);
  34. std::string getMonsterName(int townObjectIdx);
  35. void updateModWidgetBasedOnMods(const ModCompatibilityInfo & mods);
  36. template<class T>
  37. std::vector<int> getObjectIndexes() const
  38. {
  39. std::vector<int> result;
  40. for(int i = 0; i < controller.map()->objects.size(); ++i)
  41. {
  42. if(auto town = dynamic_cast<T*>(controller.map()->objects[i].get()))
  43. result.push_back(i);
  44. }
  45. return result;
  46. }
  47. template<class T>
  48. int getObjectByPos(const int3 & pos)
  49. {
  50. for(int i = 0; i < controller.map()->objects.size(); ++i)
  51. {
  52. if(auto town = dynamic_cast<T*>(controller.map()->objects[i].get()))
  53. {
  54. if(town->pos == pos)
  55. return i;
  56. }
  57. }
  58. return -1;
  59. }
  60. Ui::MapSettings *ui;
  61. MapController & controller;
  62. QComboBox * victoryTypeWidget = nullptr, * loseTypeWidget = nullptr;
  63. QComboBox * victorySelectWidget = nullptr, * loseSelectWidget = nullptr;
  64. QLineEdit * victoryValueWidget = nullptr, * loseValueWidget = nullptr;
  65. };