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); }
/// <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); }
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); } } }