コード例 #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
 /// <summary>
 /// Start the quest.
 /// </summary>
 public void Start()
 {
     questStartTime       = new DaggerfallDateTime(DaggerfallUnity.Instance.WorldTime.Now);
     smallerDungeonsState = (DaggerfallUnity.Settings.SmallerDungeons) ? QuestSmallerDungeonsState.Enabled : QuestSmallerDungeonsState.Disabled;
 }