/** * @brief OknoTawerny::przyjmij Zależnie od zaznaczenia przyjmuje oferowane zadanie albo odrzuca jedno z podjętych */ void TavernWindow::processQuest() { if (acceptQuestButton->text() == acceptText) { //NOTE do I really want string comparision? Maybe boolean flag? int index = availableQuestsWidget->currentRow(); player_->quests()->push_back(new Quest(availableQuests_->at(index))); player_->quest(player_->quests()->size() - 1)->setEmployerField(player_->position()); availableQuests_->removeAt(index); } else { Quest *quest = player_->quest(currentQuestsWidget->currentRow()); player_->removeQuest(quest->id()); questRejected = true; player_->setGold(qMax(0, player_->gold() - QuestDeclineCost)); playerWindow_->displayPlayer(player_); } fillQuestListWidgets(); acceptQuestButton->setEnabled(false); showDestinationButton->setEnabled(false); }
/** * @brief OknoTawerny::wyswietlOpisDlaMozliwych Wyświetla opis dla zadania oferowanego. * @param element dane zaznaczonego elementu */ void TavernWindow::displayAvailableQuest(const QModelIndex &index) { currentQuestsWidget->setCurrentRow(-1); Quest *quest = availableQuests_->at(index.row()); lastDisplayedQuest = quest; showDestinationButton->setEnabled(true); bool playerHasMaxQuests = player_->quests()->size() == MaximumNumberOfQuestsTaken; bool alreadyTaken; for (Quest *q : *player_->quests()) if (quest->id() == q->id()) alreadyTaken = true; acceptQuestButton->setEnabled(!playerHasMaxQuests && !alreadyTaken); acceptQuestButton->setText(acceptText); generateDescription(quest, questDescriptionWidget); }