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 QuestSaveData_v1 GetSaveData() { // Save base state QuestSaveData_v1 data = new QuestSaveData_v1(); data.uid = uid; data.questComplete = questComplete; data.questSuccess = questSuccess; data.questName = questName; data.displayName = displayName; data.factionId = factionId; data.questStartTime = questStartTime; data.questTombstoned = questTombstoned; data.questTombstoneTime = questTombstoneTime; data.smallerDungeonsState = smallerDungeonsState; data.compiledByVersion = compiledByVersion; // Save active log messages List <LogEntry> activeLogMessagesSaveDataList = new List <LogEntry>(); foreach (LogEntry logEntry in activeLogMessages.Values) { activeLogMessagesSaveDataList.Add(logEntry); } data.activeLogMessages = activeLogMessagesSaveDataList.ToArray(); // Save messages List <Message.MessageSaveData_v1> messageSaveDataList = new List <Message.MessageSaveData_v1>(); foreach (Message message in messages.Values) { messageSaveDataList.Add(message.GetSaveData()); } data.messages = messageSaveDataList.ToArray(); // Save resources List <QuestResource.ResourceSaveData_v1> resourceSaveDataList = new List <QuestResource.ResourceSaveData_v1>(); foreach (QuestResource resource in resources.Values) { resourceSaveDataList.Add(resource.GetResourceSaveData()); } data.resources = resourceSaveDataList.ToArray(); // Save questors data.questors = questors; // Save tasks List <Task.TaskSaveData_v1> taskSaveDataList = new List <Task.TaskSaveData_v1>(); foreach (Task task in tasks.Values) { Task.TaskSaveData_v1 taskData = task.GetSaveData(); taskSaveDataList.Add(taskData); } data.tasks = taskSaveDataList.ToArray(); return(data); }
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(); } } }