mapsettings.cpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /*
  2. * mapsettings.cpp, 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. #include "mapsettings.h"
  11. #include "ui_mapsettings.h"
  12. #include "mainwindow.h"
  13. #include "../lib/CSkillHandler.h"
  14. #include "../lib/spells/CSpellHandler.h"
  15. #include "../lib/CArtHandler.h"
  16. #include "../lib/CHeroHandler.h"
  17. MapSettings::MapSettings(MapController & ctrl, QWidget *parent) :
  18. QDialog(parent),
  19. ui(new Ui::MapSettings),
  20. controller(ctrl)
  21. {
  22. ui->setupUi(this);
  23. assert(controller.map());
  24. ui->mapNameEdit->setText(tr(controller.map()->name.c_str()));
  25. ui->mapDescriptionEdit->setPlainText(tr(controller.map()->description.c_str()));
  26. show();
  27. for(int i = 0; i < controller.map()->allowedAbilities.size(); ++i)
  28. {
  29. auto * item = new QListWidgetItem(QString::fromStdString(VLC->skillh->objects[i]->getNameTranslated()));
  30. item->setData(Qt::UserRole, QVariant::fromValue(i));
  31. item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
  32. item->setCheckState(controller.map()->allowedAbilities[i] ? Qt::Checked : Qt::Unchecked);
  33. ui->listAbilities->addItem(item);
  34. }
  35. for(int i = 0; i < controller.map()->allowedSpell.size(); ++i)
  36. {
  37. auto * item = new QListWidgetItem(QString::fromStdString(VLC->spellh->objects[i]->getNameTranslated()));
  38. item->setData(Qt::UserRole, QVariant::fromValue(i));
  39. item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
  40. item->setCheckState(controller.map()->allowedSpell[i] ? Qt::Checked : Qt::Unchecked);
  41. ui->listSpells->addItem(item);
  42. }
  43. for(int i = 0; i < controller.map()->allowedArtifact.size(); ++i)
  44. {
  45. auto * item = new QListWidgetItem(QString::fromStdString(VLC->arth->objects[i]->getNameTranslated()));
  46. item->setData(Qt::UserRole, QVariant::fromValue(i));
  47. item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
  48. item->setCheckState(controller.map()->allowedArtifact[i] ? Qt::Checked : Qt::Unchecked);
  49. ui->listArts->addItem(item);
  50. }
  51. for(int i = 0; i < controller.map()->allowedHeroes.size(); ++i)
  52. {
  53. auto * item = new QListWidgetItem(QString::fromStdString(VLC->heroh->objects[i]->getNameTranslated()));
  54. item->setData(Qt::UserRole, QVariant::fromValue(i));
  55. item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
  56. item->setCheckState(controller.map()->allowedHeroes[i] ? Qt::Checked : Qt::Unchecked);
  57. ui->listHeroes->addItem(item);
  58. }
  59. //ui8 difficulty;
  60. //ui8 levelLimit;
  61. //std::string victoryMessage;
  62. //std::string defeatMessage;
  63. //ui16 victoryIconIndex;
  64. //ui16 defeatIconIndex;
  65. //std::vector<PlayerInfo> players; /// The default size of the vector is PlayerColor::PLAYER_LIMIT.
  66. }
  67. MapSettings::~MapSettings()
  68. {
  69. delete ui;
  70. }
  71. void MapSettings::on_pushButton_clicked()
  72. {
  73. controller.map()->name = ui->mapNameEdit->text().toStdString();
  74. controller.map()->description = ui->mapDescriptionEdit->toPlainText().toStdString();
  75. controller.commitChangeWithoutRedraw();
  76. for(int i = 0; i < controller.map()->allowedAbilities.size(); ++i)
  77. {
  78. auto * item = ui->listAbilities->item(i);
  79. controller.map()->allowedAbilities[i] = item->checkState() == Qt::Checked;
  80. }
  81. for(int i = 0; i < controller.map()->allowedSpell.size(); ++i)
  82. {
  83. auto * item = ui->listSpells->item(i);
  84. controller.map()->allowedSpell[i] = item->checkState() == Qt::Checked;
  85. }
  86. for(int i = 0; i < controller.map()->allowedArtifact.size(); ++i)
  87. {
  88. auto * item = ui->listArts->item(i);
  89. controller.map()->allowedArtifact[i] = item->checkState() == Qt::Checked;
  90. }
  91. for(int i = 0; i < controller.map()->allowedHeroes.size(); ++i)
  92. {
  93. auto * item = ui->listHeroes->item(i);
  94. controller.map()->allowedHeroes[i] = item->checkState() == Qt::Checked;
  95. }
  96. close();
  97. }