show only unlocked Questsgroups and Quests and summarize XPs recursive regarding choosed path by character
This commit is contained in:
parent
efc60f51d9
commit
283d24ff78
10 changed files with 317 additions and 176 deletions
|
|
@ -87,15 +87,20 @@
|
|||
$hierarchy['questgroups'] = $this->Questgroups->getQuestgroupsForHierarchy($hierarchy['id'], $questgroup['id']);
|
||||
|
||||
// Get additional data
|
||||
for($i=0; $i<count($hierarchy['questgroups']); $i++)
|
||||
foreach($hierarchy['questgroups'] as $i => &$group)
|
||||
{
|
||||
// Get Character XPs
|
||||
$hierarchy['questgroups'][$i]['character_xps'] = $this->Questgroups->getAchievedXPsForQuestgroup($hierarchy['questgroups'][$i]['id'], $character['id']);
|
||||
|
||||
// Check permission of Questgroups
|
||||
if($i >= 1) {
|
||||
$hierarchy['questgroups'][$i]['access'] = $this->Questgroups->hasCharacterSolvedQuestgroup($hierarchy['questgroups'][$i-1]['id'], $character['id']);
|
||||
if($i >= 1)
|
||||
{
|
||||
if(!$this->Questgroups->hasCharacterSolvedQuestgroup($hierarchy['questgroups'][$i-1]['id'], $character['id']))
|
||||
{
|
||||
$hierarchy['questgroups'] = array_slice($hierarchy['questgroups'], 0, $i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Get Character XPs
|
||||
$group['character_xps'] = $this->Questgroups->getAchievedXPsForQuestgroup($group['id'], $character['id']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -115,23 +120,40 @@
|
|||
|
||||
|
||||
// Get Quests
|
||||
$quests = null;
|
||||
$quests = array();
|
||||
if(count($childQuestgroupshierarchy) == 0)
|
||||
{
|
||||
$quests = $this->Quests->getQuestsForQuestgroup($questgroup['id']);
|
||||
foreach($quests as $i => &$quest)
|
||||
{
|
||||
// Set status
|
||||
$quest['solved'] = $this->Quests->hasCharacterSolvedQuest($quest['id'], $character['id']);
|
||||
|
||||
// Check permission
|
||||
if($i > 0) {
|
||||
$quest['access'] = $this->Quests->hasCharacterSolvedQuest($quests[$i-1]['id'], $character['id']);
|
||||
$currentQuest = null;
|
||||
do {
|
||||
// Get next Quest
|
||||
if(is_null($currentQuest)) {
|
||||
$currentQuest = $this->Quests->getFirstQuestOfQuestgroup($questgroup['id']);
|
||||
}
|
||||
else {
|
||||
$nextQuests = $this->Quests->getNextQuests($currentQuest['id']);
|
||||
$currentQuest = null;
|
||||
foreach($nextQuests as &$nextQuest) {
|
||||
if($this->Quests->hasCharacterEnteredQuest($nextQuest['id'], $character['id'])) {
|
||||
$currentQuest = $nextQuest;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Attach related Questgroups
|
||||
$quest['relatedQuestgroups'] = $this->Questgroups->getRelatedQuestsgroupsOfQuest($quest['id']);
|
||||
// Add additional data
|
||||
if(!is_null($currentQuest))
|
||||
{
|
||||
// Set status
|
||||
$currentQuest['solved'] = $this->Quests->hasCharacterSolvedQuest($currentQuest['id'], $character['id']);
|
||||
|
||||
// Attach related Questgroups
|
||||
$currentQuest['relatedQuestgroups'] = $this->Questgroups->getRelatedQuestsgroupsOfQuest($currentQuest['id']);
|
||||
|
||||
// Add Quest to Quests
|
||||
$quests[] = $currentQuest;
|
||||
}
|
||||
}
|
||||
while(!is_null($currentQuest) && $currentQuest['solved']);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -124,6 +124,9 @@
|
|||
}
|
||||
}
|
||||
|
||||
// Set status “entered”
|
||||
$this->Quests->setQuestEntered($quest['id'], $character['id']);
|
||||
|
||||
// Get (related) Questtext
|
||||
$relatedQuesttext = $this->Questtexts->getRelatedQuesttextForQuestgroup($questgroup['id']);
|
||||
if(!empty($relatedQuesttext)) {
|
||||
|
|
@ -138,7 +141,7 @@
|
|||
$questtexttypes = $this->Questtexts->getQuesttexttypes();
|
||||
$questtexttypes = array_map(function($t) { return $t['url']; }, $questtexttypes);
|
||||
$questtextCount = $this->Questtexts->getQuesttextsCountForQuest($quest['id'], $questtexttypeUrl);
|
||||
if(/*$questtextCount > 0 && */in_array($questtexttypeUrl, $questtexttypes))
|
||||
if(in_array($questtexttypeUrl, $questtexttypes))
|
||||
{
|
||||
$questtextPos = max(intval($questtextPos), 1);
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -103,6 +103,16 @@
|
|||
// Get additional data
|
||||
foreach($hierarchy['questgroups'] as $i => &$questgroup)
|
||||
{
|
||||
// Check permission of Questgroups
|
||||
if($i >= 1)
|
||||
{
|
||||
if(!$this->Questgroups->hasCharacterSolvedQuestgroup($hierarchy['questgroups'][$i-1]['id'], $character['id']))
|
||||
{
|
||||
$hierarchy['questgroups'] = array_slice($hierarchy['questgroups'], 0, $i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Get first Questgroup text
|
||||
$text = $this->Questgroups->getFirstQuestgroupText($questgroup['id']);
|
||||
if(!empty($text))
|
||||
|
|
@ -114,11 +124,6 @@
|
|||
// Get Character XPs
|
||||
$hierarchy['questgroups'][$i]['character_xps'] = $this->Questgroups->getAchievedXPsForQuestgroup($questgroup['id'], $character['id']);
|
||||
|
||||
// Check permission of Questgroups
|
||||
if($i >= 1) {
|
||||
$questgroup['access'] = $this->Questgroups->hasCharacterSolvedQuestgroup($hierarchy['questgroups'][$i-1]['id'], $character['id']);
|
||||
}
|
||||
|
||||
// Get Media
|
||||
$questgroup['picture'] = null;
|
||||
try {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue