private void loadQuestDetails(dynamic resource) { foreach (dynamic questDetailRes in resource.QuestDetailList) { var questDetail = new QuestDetail(); questDetail.Index = questDetailRes.Index; questDetail.GameMode = GameMode.Parse(questDetailRes.GameMode); questDetail.LevelRestriction = questDetailRes.LevelRestriction; int conditionIndex = 1; while (questDetailRes.Members.ContainsKey("ConditionType" + conditionIndex)) { var condition = new QuestCondition(QuestConditionType.Parse(questDetailRes.Members["ConditionType" + conditionIndex]), ((string)questDetailRes.Members["ConditionCount" + conditionIndex]).Split(',').Select(int.Parse).ToList()); questDetail.Conditions.Add(condition); conditionIndex++; } int requireItemIndex = 1; while (questDetailRes.Members.ContainsKey("RequireItem" + requireItemIndex)) { var requirement = new QuestItemRequirement(questDetailRes.Members["RequireItem" + requireItemIndex], questDetailRes.Members["Quantity" + requireItemIndex]); questDetail.ItemRequirement.Add(requirement); requireItemIndex++; } _questDetails.Add(questDetail.Index, questDetail); } }
/// <summary> /// UI event for mini quest display onclick (will show quest detail) /// </summary> public void spawnQuestDetail() //happens when pressed { GameObject qd = questDetails; //GO with the aiming sprite qd = Instantiate(qd) as GameObject; qd.transform.Find("Description").GetComponent <Text>().text = longDesc; qd.transform.Find("Message").GetComponent <Text>().text = longMSG; qd.transform.SetParent(GameObject.Find("CanvasBG").transform, false); qd.transform.localRotation = new Quaternion(0, 0, 0, 0); qd.SetActive(true); QuestDetail qDetail = qd.GetComponent <QuestDetail>(); qDetail.questLoader = questLoader; qDetail.questIndex = questIndex; /* * foreach (Button b in transform.parent.GetComponentsInChildren<Button>()) { * b.interactable = false; * } */ }
public void AddActiveQuest(Quest newQuest) { GameObject questDetailInstance = Instantiate(questDetailPrefab); questDetailInstance.transform.SetParent(scrollViewContent.transform); QuestDetail instance = questDetailInstance.GetComponent <QuestDetail>(); instance.DisplayQuest(newQuest); questDetailInstances.Add(instance); }
// make all the quest item associated with this quest toggeable private void ToggleQuestItemInteractable(QuestDetail quest) { GameObject[] objects = GameObject.FindGameObjectsWithTag(PickupItem.DEFAULT_TAG); foreach (GameObject gameObj in objects) { PickupItem item = gameObj.GetComponent <PickupItem>(); if (item.itemName == quest.itemName) { item.BecomeInteractible(); } } }
/// <summary> /// Add a quest to the manager. /// </summary> /// <param name="questName"> /// Name of the Quest Detail Scriptable Object. /// </param> public void AddQuest(string questName) { QuestDetail detail = Resources.Load <QuestDetail>("Quests/" + questName); QuestUI quest; switch (detail.questType) { case QuestType.TALK: quest = Instantiate(talkQuestPrefab, transform).GetComponent <QuestUI>(); break; default: quest = Instantiate(progressQuestPrefab, transform).GetComponent <QuestUI>(); break; } quest.StartQuest(detail); activeQuests.Add(quest); DisplayQuests(); ToggleQuestItemInteractable(detail); }
public void StartQuest(QuestDetail _detail) { detail = _detail; descriptionTxt.text = detail.description; }
// start a new quest // need to call this first after instantiaing a Quest Prefab public new void StartQuest(QuestDetail _detail) { base.StartQuest(_detail); curAmount = 0; progressTxt.text = $"{curAmount}/{detail.amount}"; }