2024-12-03 22:07:33 +02:00
|
|
|
/*
|
|
|
|
* herosspellwidget.cpp, part of VCMI engine
|
|
|
|
*
|
|
|
|
* Authors: listed in file AUTHORS in main folder
|
|
|
|
*
|
|
|
|
* License: GNU General Public License v2.0 or later
|
|
|
|
* Full text of license available in license.txt file, in main folder
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
#include "StdInc.h"
|
2024-12-03 22:28:21 +02:00
|
|
|
#include "artifactwidget.h"
|
|
|
|
#include "ui_artifactwidget.h"
|
2024-12-03 22:07:33 +02:00
|
|
|
#include "inspector.h"
|
|
|
|
#include "../../lib/ArtifactUtils.h"
|
|
|
|
#include "../../lib/constants/StringConstants.h"
|
|
|
|
|
|
|
|
ArtifactWidget::ArtifactWidget(CArtifactFittingSet & fittingSet, QWidget * parent) :
|
|
|
|
QDialog(parent),
|
|
|
|
ui(new Ui::ArtifactWidget),
|
|
|
|
fittingSet(fittingSet)
|
|
|
|
{
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
|
|
|
connect(ui->saveButton, &QPushButton::clicked, this, [this]()
|
|
|
|
{
|
|
|
|
emit saveArtifact(ui->artifact->currentData().toInt(), ArtifactPosition(ui->possiblePositions->currentData().toInt()));
|
|
|
|
close();
|
|
|
|
});
|
|
|
|
connect(ui->cancelButton, &QPushButton::clicked, this, &ArtifactWidget::close);
|
|
|
|
connect(ui->possiblePositions, static_cast<void(QComboBox::*) (int)> (&QComboBox::currentIndexChanged), this, &ArtifactWidget::fillArtifacts);
|
|
|
|
|
|
|
|
std::vector<ArtifactPosition> possiblePositions;
|
|
|
|
for(const auto & slot : ArtifactUtils::allWornSlots())
|
|
|
|
{
|
|
|
|
if(fittingSet.isPositionFree(slot))
|
|
|
|
{
|
|
|
|
ui->possiblePositions->addItem(QString::fromStdString(NArtifactPosition::namesHero[slot.num]), slot.num);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ui->possiblePositions->addItem(QString::fromStdString(NArtifactPosition::backpack), ArtifactPosition::BACKPACK_START);
|
|
|
|
fillArtifacts();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void ArtifactWidget::fillArtifacts()
|
|
|
|
{
|
|
|
|
ui->artifact->clear();
|
|
|
|
auto currentSlot = ui->possiblePositions->currentData().toInt();
|
|
|
|
for (const auto& art : VLC->arth->getDefaultAllowed())
|
|
|
|
{
|
|
|
|
auto artifact = art.toArtifact();
|
|
|
|
// forbid spell scroll for now as require special handling
|
|
|
|
if (artifact->canBePutAt(&fittingSet, currentSlot, true) && artifact->getId() != ArtifactID::SPELL_SCROLL) {
|
|
|
|
ui->artifact->addItem(QString::fromStdString(artifact->getNameTranslated()), QVariant::fromValue(artifact->getIndex()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
ArtifactWidget::~ArtifactWidget()
|
|
|
|
{
|
|
|
|
delete ui;
|
|
|
|
}
|