Exemplo n.º 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);
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
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();
                }
            }
        }