public void Deserialize(ProgressionData data) { _completedStates = data.completedStates; _objectivesInProgress = data.objectivesInProgress; _interactableStates = data.interactableStates; _dialogueStates = data.dialogueStates; hasState = true; completedStates = new HashSet <string>(); foreach (var i in _completedStates) { completedStates.Add(i); } objectivesInProgress = new HashSet <string>(); foreach (var i in _objectivesInProgress) { objectivesInProgress.Add(i); } interactableStatesDict = new Dictionary <string, InteractableState>(); foreach (var i in _interactableStates) { interactableStatesDict.Add(i.interactableId, i); } dialogueStatesDict = new Dictionary <string, DialogueState>(); foreach (var i in _dialogueStates) { dialogueStatesDict.Add(i.dialogueId, i); } CheckUnlockConditions(true); }
public void Serialize(ref ProgressionData data) { hasState = true; _completedStates = completedStates.ToArray(); _objectivesInProgress = objectivesInProgress.ToArray(); _interactableStates = interactableStatesDict.Values.ToArray(); for (int i = 0; i < _interactableStates.Length; ++i) { var state = _interactableStates[i]; state.interactCount = _interactableStates[i].interactable.interactCount; _interactableStates[i] = state; } _dialogueStates = dialogueStatesDict.Values.ToArray(); for (int i = 0; i < _dialogueStates.Length; ++i) { if (string.IsNullOrEmpty(_dialogueStates[i].dialogueId)) { continue; } var state = _dialogueStates[i]; state.persistConvoId = _dialogueStates[i].dialogue.persistConvoId; _dialogueStates[i] = state; } data.completedStates = _completedStates; data.objectivesInProgress = _objectivesInProgress; data.interactableStates = _interactableStates; data.dialogueStates = _dialogueStates; }