コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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();
                }
            }
        }