예제 #1
0
/**
 * @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);
}
예제 #2
0
/**
 * @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);
}