Ejemplo n.º 1
0
        /// <summary>
        /// Sets sub-objects' runtime references to this quest.
        /// </summary>
        public void SetRuntimeReferences()
        {
            // Set references in start info:
            if (Application.isPlaying)
            {
                m_timeCooldownLastChecked = GameTime.time;
            }
            if (autostartConditionSet != null)
            {
                autostartConditionSet.SetRuntimeReferences(this, null);
            }
            if (offerConditionSet != null)
            {
                offerConditionSet.SetRuntimeReferences(this, null);
            }
            QuestContent.SetRuntimeReferences(offerConditionsUnmetContentList, this, null);
            QuestContent.SetRuntimeReferences(offerContentList, this, null);

            // Set references in counters:
            if (counterList != null)
            {
                for (int i = 0; i < counterList.Count; i++)
                {
                    counterList[i].SetRuntimeReferences(this);
                }
            }

            // Set references in state info:
            if (stateInfoList != null)
            {
                for (int i = 0; i < stateInfoList.Count; i++)
                {
                    var stateInfo = QuestStateInfo.GetStateInfo(stateInfoList, (QuestState)i);
                    if (stateInfo != null)
                    {
                        stateInfo.SetRuntimeReferences(this, null);
                    }
                }
            }

            // Set references in nodes:
            if (nodeList != null)
            {
                for (int i = 0; i < nodeList.Count; i++)
                {
                    if (nodeList[i] != null)
                    {
                        nodeList[i].InitializeRuntimeReferences(this);
                    }
                }
                for (int i = 0; i < nodeList.Count; i++)
                {
                    if (nodeList[i] != null)
                    {
                        nodeList[i].ConnectRuntimeNodeReferences();
                    }
                }
                for (int i = 0; i < nodeList.Count; i++)
                {
                    if (nodeList[i] != null)
                    {
                        nodeList[i].SetRuntimeNodeReferences();
                    }
                }
            }

            // Record list of any nodes' speakers who aren't the quest giver:
            RecordSpeakersUsedInQuestAndAnyNodes();

            // Add tags to dictionary:
            QuestMachineTags.AddTagsToDictionary(tagDictionary, title);
            QuestMachineTags.AddTagsToDictionary(tagDictionary, group);
            if (!StringField.IsNullOrEmpty(questGiverID))
            {
                tagDictionary.SetTag(QuestMachineTags.QUESTGIVERID, questGiverID);
            }
        }