|
@@ -368,6 +368,47 @@ const Framework::Text& Quest::getQuestId() const
|
|
return questId;
|
|
return questId;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+Framework::Text Quest::getQuestGraphItemUIML(QuestStorage* zStorage)
|
|
|
|
+{
|
|
|
|
+ Framework::Text requirements = "";
|
|
|
|
+ for (Framework::Text* requiredQuest : requiredQuestsIds)
|
|
|
|
+ {
|
|
|
|
+ if (requirements.getLength() > 0)
|
|
|
|
+ {
|
|
|
|
+ requirements += ",";
|
|
|
|
+ }
|
|
|
|
+ requirements += *requiredQuest;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Framework::Text result = "<questGraphItem id=\"";
|
|
|
|
+ result.append() << questId << "\" name=\"" << questName + "\" image=\""
|
|
|
|
+ << imagePath << "\" description=\"" << description
|
|
|
|
+ << "\" finished=\"" << zStorage->isQuestFinished()
|
|
|
|
+ << "\" mainQuest=\"" << mainQuest << "\" requirements=\""
|
|
|
|
+ << requirements << "\"/>";
|
|
|
|
+ return result;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+Framework::Text Quest::getQuestViewUIML(QuestStorage* zStorage)
|
|
|
|
+{
|
|
|
|
+ Framework::Text result = "<questView id=\"";
|
|
|
|
+ result.append() << questId << "\" name=\"" << questName + "\" description=\"" << description
|
|
|
|
+ << "\" finished=\"" << zStorage->isQuestFinished()
|
|
|
|
+ << "\" rewarded=\"" << zStorage ->isQuestRewarded() << "\">";
|
|
|
|
+ for (QuestRequirement* requirement : requirements)
|
|
|
|
+ {
|
|
|
|
+ result += requirement->getRequirementUIML(
|
|
|
|
+ zStorage->zStorage(requirement->getRequirementId()));
|
|
|
|
+ }
|
|
|
|
+ for (QuestReward* reward : rewards)
|
|
|
|
+ {
|
|
|
|
+ result += reward->getRewardUIML();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ result += "</questView>";
|
|
|
|
+ return result;
|
|
|
|
+}
|
|
|
|
+
|
|
QuestType::QuestType()
|
|
QuestType::QuestType()
|
|
: TypeFactory<Quest>()
|
|
: TypeFactory<Quest>()
|
|
{}
|
|
{}
|
|
@@ -517,6 +558,39 @@ void QuestCollection::addQuest(Quest* zQuest)
|
|
quests.add(zQuest);
|
|
quests.add(zQuest);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+const Framework::Text& QuestCollection::getName() const
|
|
|
|
+{
|
|
|
|
+ return name;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+Framework::Text QuestCollection::getQuestGraphUIML(QuestParty* zParty)
|
|
|
|
+{
|
|
|
|
+ Framework::Text result = "";
|
|
|
|
+ for (Quest* quest : quests)
|
|
|
|
+ {
|
|
|
|
+ if (quest->isVisible(zParty))
|
|
|
|
+ {
|
|
|
|
+ QuestStorage* zStorage = zParty->zQuestStorage(quest->getQuestId());
|
|
|
|
+ result += quest->getQuestGraphItemUIML(zStorage);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+Framework::Text QuestCollection::getQuestViewUIML(
|
|
|
|
+ QuestParty* zParty, Framework::Text questId)
|
|
|
|
+{
|
|
|
|
+ for (Quest* quest : quests)
|
|
|
|
+ {
|
|
|
|
+ if (quest->getQuestId().istGleich(questId))
|
|
|
|
+ {
|
|
|
|
+ QuestStorage* zStorage = zParty->zQuestStorage(quest->getQuestId());
|
|
|
|
+ return quest->getQuestViewUIML(zStorage);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return "";
|
|
|
|
+}
|
|
|
|
+
|
|
QuestCollectionType::QuestCollectionType()
|
|
QuestCollectionType::QuestCollectionType()
|
|
: TypeFactory<QuestCollection>()
|
|
: TypeFactory<QuestCollection>()
|
|
{}
|
|
{}
|
|
@@ -568,6 +642,18 @@ QuestManager::QuestManager()
|
|
: ReferenceCounter()
|
|
: ReferenceCounter()
|
|
{}
|
|
{}
|
|
|
|
|
|
|
|
+QuestParty* QuestManager::zParty(int entityId)
|
|
|
|
+{
|
|
|
|
+ for (QuestParty* party : parties)
|
|
|
|
+ {
|
|
|
|
+ if (party->isMember(entityId))
|
|
|
|
+ {
|
|
|
|
+ return party;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
void QuestManager::loadQuests()
|
|
void QuestManager::loadQuests()
|
|
{
|
|
{
|
|
Framework::Text worldDir = Game::INSTANCE->getWorldDirectory();
|
|
Framework::Text worldDir = Game::INSTANCE->getWorldDirectory();
|
|
@@ -694,16 +780,12 @@ void QuestManager::saveQuests()
|
|
|
|
|
|
void QuestManager::processEvent(QuestEvent* event)
|
|
void QuestManager::processEvent(QuestEvent* event)
|
|
{
|
|
{
|
|
- Entity* zEntity = event->zActingEntity();
|
|
|
|
- for (QuestParty* party : parties)
|
|
|
|
|
|
+ QuestParty* party = zParty(event->zActingEntity()->getId());
|
|
|
|
+ if (party)
|
|
{
|
|
{
|
|
- if (party->isMember(zEntity->getId()))
|
|
|
|
|
|
+ for (QuestCollection* questCollection : questCollections)
|
|
{
|
|
{
|
|
- for (QuestCollection* questCollection : questCollections)
|
|
|
|
- {
|
|
|
|
- questCollection->processEvent(event, party);
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
|
|
+ questCollection->processEvent(event, party);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
event->release();
|
|
event->release();
|
|
@@ -712,16 +794,68 @@ void QuestManager::processEvent(QuestEvent* event)
|
|
void QuestManager::giveReward(
|
|
void QuestManager::giveReward(
|
|
Framework::Text questId, int choice, Entity* zTargetEntity)
|
|
Framework::Text questId, int choice, Entity* zTargetEntity)
|
|
{
|
|
{
|
|
- for (QuestParty* party : parties)
|
|
|
|
|
|
+ QuestParty* party = zParty(zTargetEntity->getId());
|
|
|
|
+ if (party)
|
|
{
|
|
{
|
|
- if (party->isMember(zTargetEntity->getId()))
|
|
|
|
|
|
+ for (QuestCollection* questCollection : questCollections)
|
|
{
|
|
{
|
|
- for (QuestCollection* questCollection : questCollections)
|
|
|
|
- {
|
|
|
|
- questCollection->giveReward(
|
|
|
|
- questId, choice, zTargetEntity, party);
|
|
|
|
- }
|
|
|
|
- return;
|
|
|
|
|
|
+ questCollection->giveReward(questId, choice, zTargetEntity, party);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+Framework::Text QuestManager::getDialogUIML(Entity* zTargetEntity)
|
|
|
|
+{
|
|
|
|
+ Framework::Text result = "<dialog id=\"quests\" title=\"Quests\" "
|
|
|
|
+ "width=\"1200\" height=\"800\">";
|
|
|
|
+ result.append()
|
|
|
|
+ << "<listView id=\"collectionList\" width=\"100%\" height=\"100%\" "
|
|
|
|
+ "member-width=\"200\" member-height=\"40\" align-top=\"start\" "
|
|
|
|
+ "align-left=\"start\">";
|
|
|
|
+ QuestParty* party = zParty(zTargetEntity->getId());
|
|
|
|
+ for (QuestCollection* questCollection : questCollections)
|
|
|
|
+ {
|
|
|
|
+ if (questCollection->isVisible(party))
|
|
|
|
+ {
|
|
|
|
+ result.append()
|
|
|
|
+ << "<listItem id=\"" << questCollection->getName() << "\">"
|
|
|
|
+ << "<itemTitle>"
|
|
|
|
+ << "<text>" << questCollection->getName() << "</text>"
|
|
|
|
+ << "</itemTitle>"
|
|
|
|
+ << "<itemContent>"
|
|
|
|
+ << "<questGraph collectionName=\"" << questCollection->getName()
|
|
|
|
+ << "\"/>"
|
|
|
|
+ << "</itemContent>"
|
|
|
|
+ << "</listItem>";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ result.append() << "</listView>"
|
|
|
|
+ << "</dialog>";
|
|
|
|
+ return result;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+Framework::Text QuestManager::getQuestGraphUIML(
|
|
|
|
+ Entity* zTargetEntity, Framework::Text collectionName)
|
|
|
|
+{
|
|
|
|
+ QuestParty* party = zParty(zTargetEntity->getId());
|
|
|
|
+ for (QuestCollection* questCollection : questCollections)
|
|
|
|
+ {
|
|
|
|
+ if (questCollection->getName().istGleich(collectionName))
|
|
|
|
+ {
|
|
|
|
+ return questCollection->getQuestGraphUIML(party);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ return "";
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+Framework::Text QuestManager::getQuestViewUIML(
|
|
|
|
+ Entity* zTargetEntity, Framework::Text questId)
|
|
|
|
+{
|
|
|
|
+ Framework::Text result = "";
|
|
|
|
+ QuestParty* party = zParty(zTargetEntity->getId());
|
|
|
|
+ for (QuestCollection* questCollection : questCollections)
|
|
|
|
+ {
|
|
|
|
+ result += questCollection->getQuestViewUIML(party, questId);
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
}
|
|
}
|