private void Awake() { if (!(startQuestPrefab == null || returnQuestPrefab == null)) { this.enabled = true; Hide(); } else { Debug.LogWarning("Missing indicator, load a preset if the same assets are used everytime.", this); this.enabled = false; } giver = GetComponent <QuestGiver>(); }
public void StartQuestList(QuestGiver _giver) { //giver = _giver; startQuest.onClick.AddListener(() => { GetSelectedQuest(out QuestLink _link); _giver.QuestAccept(_link.line); CloseQuestList(); }); declineQuest.onClick.AddListener(() => { GetSelectedQuest(out QuestLink _link); _giver.QuestDecline(_link.line); CloseQuestList(); }); endQuest.onClick.AddListener(() => { GetSelectedQuest(out QuestLink _link); _giver.QuestEnd(_link.line, GetSelectedRewards()); CloseQuestList(); }); quests = _giver.GetAvailableQuests(); List <QuestRewardType> availableTypes = new List <QuestRewardType>(); List <QuestRewardType> selectedTypes = new List <QuestRewardType>(); List <QuestReward> rewards = new List <QuestReward>(); // Get all rewards for each quest. foreach (QuestLink _link in quests) { QuestReward[] _rewards = _link.quest.GetRewardData(); // Get each RewardType flag for the quest. availableTypes.Add(QuestRewardType.Nothing); selectedTypes.Add(QuestRewardType.Nothing); for (int i = 0; i < _rewards.Length; i++) { // Quest might have many available selections. availableTypes[i] |= rewards[i].type; } rewards.AddRange(_rewards); } rewardTypes = availableTypes.ToArray(); selectedRewardTypes = selectedTypes.ToArray(); }