public void RestoreSaveData(QuestSaveData_v1 data) { // Restore base state uid = data.uid; questComplete = data.questComplete; questSuccess = data.questSuccess; questName = data.questName; displayName = data.displayName; factionId = data.factionId; questStartTime = data.questStartTime; questTombstoned = data.questTombstoned; questTombstoneTime = data.questTombstoneTime; smallerDungeonsState = data.smallerDungeonsState; compiledByVersion = data.compiledByVersion; // Restore active log messages activeLogMessages.Clear(); foreach (LogEntry logEntry in data.activeLogMessages) { activeLogMessages.Add(logEntry.stepID, logEntry); } // Restore messages messages.Clear(); foreach (Message.MessageSaveData_v1 messageData in data.messages) { Message message = new Message(this); message.RestoreSaveData(messageData); messages.Add(message.ID, message); } // Restore resources resources.Clear(); foreach (QuestResource.ResourceSaveData_v1 resourceData in data.resources) { // Construct deserialized QuestResource based on type System.Reflection.ConstructorInfo ctor = resourceData.type.GetConstructor(new Type[] { typeof(Quest) }); QuestResource resource = (QuestResource)ctor.Invoke(new object[] { this }); // Restore state resource.RestoreResourceSaveData(resourceData); resources.Add(resource.Symbol.Name, resource); } // Restore questors questors.Clear(); if (data.questors != null) { questors = data.questors; } // Restore tasks tasks.Clear(); foreach (Task.TaskSaveData_v1 taskData in data.tasks) { Task task = new Task(this); task.RestoreSaveData(taskData); tasks.Add(task.Symbol.Name, task); } }
public void RestoreSaveData(QuestSaveData_v1 data) { // Restore base state uid = data.uid; questComplete = data.questComplete; questSuccess = data.questSuccess; questName = data.questName; displayName = data.displayName; factionId = data.factionId; questStartTime = data.questStartTime; questTombstoned = data.questTombstoned; questTombstoneTime = data.questTombstoneTime; // Restore active log messages activeLogMessages.Clear(); foreach (LogEntry logEntry in data.activeLogMessages) { activeLogMessages.Add(logEntry.stepID, logEntry); } // Restore messages messages.Clear(); foreach (Message.MessageSaveData_v1 messageData in data.messages) { Message message = new Message(this); message.RestoreSaveData(messageData); messages.Add(message.ID, message); } // Restore resources resources.Clear(); foreach (QuestResource.ResourceSaveData_v1 resourceData in data.resources) { // Construct deserialized QuestResource based on type System.Reflection.ConstructorInfo ctor = resourceData.type.GetConstructor(new Type[] { typeof(Quest) }); QuestResource resource = (QuestResource)ctor.Invoke(new object[] { this }); // Restore state resource.RestoreResourceSaveData(resourceData); resources.Add(resource.Symbol.Name, resource); } // Restore questors questors.Clear(); if (data.questors != null) { questors = data.questors; } // Restore tasks tasks.Clear(); foreach (Task.TaskSaveData_v1 taskData in data.tasks) { Task task = new Task(this); task.RestoreSaveData(taskData); tasks.Add(task.Symbol.Name, task); } // May need to remap old marker system at end of load for each Place resource QuestResource[] foundPlaces = GetAllResources(typeof(Place)); if (foundPlaces != null && foundPlaces.Length > 0) { foreach (QuestResource place in foundPlaces) { (place as Place).ReassignSiteDetailsLegacyMarkers(); } } }