Example #1
0
    // Token: 0x06000107 RID: 263 RVA: 0x0000A06C File Offset: 0x0000826C
    private static void LoadTask(TaskSerializationData taskSerializationData, FieldSerializationData fieldSerializationData, ref List <Task> taskList, ref BehaviorSource behaviorSource)
    {
        int  count = taskList.Count;
        Type type  = TaskUtility.GetTypeWithinAssembly(taskSerializationData.types[count]);

        if (type == null)
        {
            bool flag = false;
            for (int i = 0; i < taskSerializationData.parentIndex.Count; i++)
            {
                if (count == taskSerializationData.parentIndex[i])
                {
                    flag = true;
                    break;
                }
            }
            if (flag)
            {
                type = typeof(UnknownParentTask);
            }
            else
            {
                type = typeof(UnknownTask);
            }
        }
        Task task = TaskUtility.CreateInstance(type) as Task;

        task.Owner = (behaviorSource.Owner.GetObject() as Behavior);
        taskList.Add(task);
        int num = taskSerializationData.startIndex[count];
        int num2;

        if (count + 1 < taskSerializationData.startIndex.Count)
        {
            num2 = taskSerializationData.startIndex[count + 1];
        }
        else
        {
            num2 = fieldSerializationData.startIndex.Count;
        }
        Dictionary <string, int> dictionary = ObjectPool.Get <Dictionary <string, int> >();

        dictionary.Clear();
        for (int j = num; j < num2; j++)
        {
            if (!dictionary.ContainsKey(fieldSerializationData.typeName[j]))
            {
                dictionary.Add(fieldSerializationData.typeName[j], fieldSerializationData.startIndex[j]);
            }
        }
        task.ID           = (int)BinaryDeserializationDeprecated.LoadField(fieldSerializationData, dictionary, typeof(int), "ID", null, null, null);
        task.FriendlyName = (string)BinaryDeserializationDeprecated.LoadField(fieldSerializationData, dictionary, typeof(string), "FriendlyName", null, null, null);
        task.IsInstant    = (bool)BinaryDeserializationDeprecated.LoadField(fieldSerializationData, dictionary, typeof(bool), "IsInstant", null, null, null);
        object obj;

        if ((obj = BinaryDeserializationDeprecated.LoadField(fieldSerializationData, dictionary, typeof(bool), "Disabled", null, null, null)) != null)
        {
            task.Disabled = (bool)obj;
        }
        BinaryDeserializationDeprecated.LoadNodeData(fieldSerializationData, dictionary, taskList[count]);
        if (task.GetType().Equals(typeof(UnknownTask)) || task.GetType().Equals(typeof(UnknownParentTask)))
        {
            if (!task.FriendlyName.Contains("Unknown "))
            {
                task.FriendlyName = string.Format("Unknown {0}", task.FriendlyName);
            }
            if (!task.NodeData.Comment.Contains("Loaded from an unknown type. Was a task renamed or deleted?"))
            {
                task.NodeData.Comment = string.Format("Loaded from an unknown type. Was a task renamed or deleted?{0}", (!task.NodeData.Comment.Equals(string.Empty)) ? string.Format("\0{0}", task.NodeData.Comment) : string.Empty);
            }
        }
        BinaryDeserializationDeprecated.LoadFields(fieldSerializationData, dictionary, taskList[count], string.Empty, behaviorSource);
        ObjectPool.Return <Dictionary <string, int> >(dictionary);
    }