Răsfoiți Sursa

fix problem displaying multiple quest item rewards

Kolja Strohm 1 zi în urmă
părinte
comite
0d586f5c73
2 a modificat fișierele cu 80 adăugiri și 19 ștergeri
  1. 14 19
      FactoryCraft/QuestReward.cpp
  2. 66 0
      Windows Version/data/quests/quests.json

+ 14 - 19
FactoryCraft/QuestReward.cpp

@@ -148,13 +148,17 @@ void QuestRewardGiveItems::addRewardUIML(
                          | Framework::Fenster::Style::Erlaubt)
               ->setID(Framework::Text("reward_") += rewardId)
               ->addChild(UIMLBuilder::createTextAuto("Item Reward:")->build());
+    int index = 0;
     for (ItemStackInfo* info : items)
     {
+        Framework::Text idPrefix;
+        idPrefix.append() << "reward_" << rewardId << "_" << index;
+        Framework::Text id;
+        id.append() << idPrefix.getText() << "_item_stack";
         containerBuilder->addChild(UIMLBuilder::createItemStack()
                 ->setWidth(50)
                 ->setHeight(50)
-                ->setID(
-                    (Framework::Text("reward_") += rewardId) += "_item_stack")
+                ->setID(id)
                 ->setAmount(info->getCount())
                 ->setItemTypeID(info->zItem()->getTypeId())
                 ->setToolTip(info->zItem()->getTooltipUIML())
@@ -163,32 +167,23 @@ void QuestRewardGiveItems::addRewardUIML(
             (Framework::Text(info->getCount()) += " ")
             += info->zItem()->getName())
                 ->setMarginLeft(10)
-                ->setID((Framework::Text("reward_") += rewardId)
-                        += "_item_description")
-                ->setAlignLeftToElement(
-                    (Framework::Text("reward_") += rewardId) += "_item_stack")
-                ->setAlignYToElement(
-                    (Framework::Text("reward_") += rewardId) += "_item_stack")
+                ->setID(idPrefix + "_item_description")
+                ->setAlignLeftToElement(id)
+                ->setAlignYToElement(id)
                 ->build());
-        if (zStorage->containsKey(
-                (Framework::Text("reward_") += rewardId) += "_given_to"))
+        if (zStorage->containsKey(idPrefix + "_given_to"))
         {
-            auto name = zStorage
-                            ->zValue((Framework::Text("reward_") += rewardId)
-                                     += "_given_to")
+            auto name = zStorage->zValue(idPrefix + "_given_to")
                             ->asString();
             containerBuilder->addChild(UIMLBuilder::createTextAuto(
                 Framework::Text("Given to: ") += name->getString())
                     ->setMarginTop(10)
                     ->setTextColor(0xFF00FF00)
-                    ->setAlignTopToElement(
-                        (Framework::Text("reward_") += rewardId)
-                        += "_item_description")
-                    ->setAlignXToElement(
-                        (Framework::Text("reward_") += rewardId)
-                        += "_item_description")
+                    ->setAlignTopToElement(idPrefix + "_item_description")
+                    ->setAlignXToElement(idPrefix + "_item_description")
                     ->build());
         }
+        index++;
     }
     zParent->addChild(containerBuilder->build());
 }

+ 66 - 0
Windows Version/data/quests/quests.json

@@ -197,6 +197,72 @@
                         ]
                     }
                 ]
+            },
+            {
+                "questId": "resin",
+                "questName": "Resin",
+                "description": "Gather some resin by removing the tree bark from resin trees.",
+                "imagePath": "itemType:Resin",
+                "mainQuest": true,
+                "requirements": [
+                    {
+                        "type": "item_in_inventory",
+                        "amount": 1,
+                        "itemType": "Resin",
+                        "id": "resin_requirement",
+                        "description": "Resin"
+                    }
+                ],
+                "rewards": [
+                    {
+                        "rewardId": "1",
+                        "type": "give_items",
+                        "items": [
+                            {
+                                "item": {
+                                    "type": "Resin"
+                                },
+                                "count": 1
+                            }
+                        ]
+                    }
+                ]
+            },
+            {
+                "questId": "glue",
+                "questName": "Glue",
+                "description": "Burn your resin in the campfire to produce glue.",
+                "imagePath": "itemType:Glue",
+                "requiredQuestIds": [
+                    [
+                        "resin",
+                        "campfire"
+                    ]
+                ],
+                "mainQuest": true,
+                "requirements": [
+                    {
+                        "type": "item_in_inventory",
+                        "amount": 1,
+                        "itemType": "Glue",
+                        "id": "glue_requirement",
+                        "description": "Glue"
+                    }
+                ],
+                "rewards": [
+                    {
+                        "rewardId": "1",
+                        "type": "give_items",
+                        "items": [
+                            {
+                                "item": {
+                                    "type": "Glue"
+                                },
+                                "count": 1
+                            }
+                        ]
+                    }
+                ]
             }
         ]
     }