mapsettings.h 1.8 KB

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