Inheritance: IFileObject
示例#1
0
        public void LoadResource(GenericObject data)
        {
            Text = data.Type;
            listView1.BeginUpdate();
            try
            {
                foreach (string name in data.PropertyValues)
                {
                    var item = new ListViewItem(name);
                    var dataType = data.GetDataType(name);
                    item.SubItems.Add(dataType);
                    var isArray = dataType.StartsWith("@") && !dataType.StartsWith("@*");
                    item.SubItems.Add(isArray ? "" : data.GetPropertyValueAsString(name, _explorer.StringsFile));
                    listView1.Items.Add(item);

                    if (isArray)
                    {
                        var items = (List<object>) data.GetPropertyValue(name);
                        for(int i=0; i<items.Count; i++)
                        {
                            var childItem = new ListViewItem("[" + i + "]");
                            childItem.SubItems.Add(dataType.Substring(1));
                            childItem.SubItems.Add(items[i].ToString());
                            childItem.IndentCount = 1;
                            listView1.Items.Add(childItem);
                        }
                    }
                }
                if (data.UndecodedData != null)
                {
                    var item = new ListViewItem("<undecoded data>");
                    item.SubItems.Add("byte[]");
                    item.SubItems.Add(data.UndecodedData.Length + " bytes");
                    listView1.Items.Add(item);
                }
            }
            finally
            {
                listView1.EndUpdate();
            }
        }
示例#2
0
 private static void ReadGenericObjectProperty(GenericObject target, IFileStream stream, string type, uint size, string name)
 {
     IPropertySerializer serializer = GetSerializer(type);
     if (serializer != null)
     {
         target.SetProperty(name, type, serializer.Deserialize(stream));
     }
     else
     {
         uint valueSize = size - 4;
         byte[] value = new byte[valueSize];
         stream.SerializeValue(ref value, valueSize);
         target.SetProperty(name, type, value);
     }
 }