public void CloneSubassetsInto(QuestConditionSet copy)
 {
     if (copy == null)
     {
         if (Debug.isDebugBuild)
         {
             Debug.LogWarning("Quest Machine: QuestConditionSet.CloneSubassetsInto() failed because copy is invalid.");
         }
         return;
     }
     copy.conditionList = QuestSubasset.CloneList(conditionList);
 }
示例#2
0
        /// <summary>
        /// Returns a new instance of the quest, including new instances of all subassets
        /// such as QuestAction, QuestCondition, and QuestContent subassets.
        /// </summary>
        public Quest Clone()
        {
            var clone = Instantiate(this);

            SetRuntimeReferences(); // Fix original's references since Instantiate calls OnEnable > SetRuntimeReferences while clone's fields still point to original.
            clone.isInstance    = true;
            clone.originalAsset = originalAsset;
            autostartConditionSet.CloneSubassetsInto(clone.autostartConditionSet);
            offerConditionSet.CloneSubassetsInto(clone.offerConditionSet);
            clone.offerConditionsUnmetContentList = QuestSubasset.CloneList(offerConditionsUnmetContentList);
            clone.offerContentList = QuestSubasset.CloneList(offerContentList);
            QuestStateInfo.CloneSubassets(stateInfoList, clone.stateInfoList);
            QuestNode.CloneSubassets(nodeList, clone.nodeList);
            tagDictionary.CopyInto(clone.tagDictionary);
            clone.SetRuntimeReferences();
            return(clone);
        }
示例#3
0
 public void CloneSubassetsInto(QuestStateInfo copy)
 {
     // Assumes lists are identical except subassets haven't been copied.
     if (copy == null || copy.categorizedContentList == null)
     {
         if (Debug.isDebugBuild)
         {
             Debug.LogWarning("Quest Machine: QuestStateInfo.CloneSubassetsInto() failed because the destination copy or its content list is null.");
         }
     }
     else if (m_actionList == null || m_categorizedContentList == null)
     {
         if (Debug.isDebugBuild)
         {
             Debug.LogWarning("Quest Machine: QuestStateInfo.CloneSubassetsInto() failed because the original state info's action list or content list is null.");
         }
     }
     else if (copy.categorizedContentList.Count != m_categorizedContentList.Count)
     {
         if (Debug.isDebugBuild)
         {
             Debug.LogWarning("Quest Machine: QuestStateInfo.CloneSubassetsInto() failed because the destination copy's content list is a different size than the original's.");
         }
     }
     else
     {
         copy.actionList = QuestSubasset.CloneList(m_actionList);
         for (int i = 0; i < m_categorizedContentList.Count; i++)
         {
             if (copy.categorizedContentList[i] == null)
             {
                 copy.categorizedContentList[i] = new QuestContentSet();
             }
             copy.categorizedContentList[i].contentList = QuestSubasset.CloneList(m_categorizedContentList[i].contentList);
         }
     }
 }