mapsettings.cpp 3.4 KB

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