private List <CompareProperty> CompareProperties(ArchiveEntry a, ArchiveEntry b) { var compareProperties = new List <CompareProperty>(); compareProperties.Add(new CompareProperty("File Size", string.Format("{0:n0} bytes", a.Size), string.Format("{0:n0} bytes", b.Size))); // These properties only gets compared if they're same type, since some properties only appear on those types if (a.GetType() == b.GetType()) { switch (a) { case BA2TextureEntry aTex: var texCompare = (BA2TextureEntry)b; compareProperties.Add(new CompareProperty("DXIGI_FORMAT", aTex.format, texCompare.format, typeof(DXGI_FORMAT_FULL), "Texture")); compareProperties.Add(new CompareProperty("Format", aTex.format, texCompare.format, "Texture")); compareProperties.Add(new CompareProperty("Width", aTex.width, texCompare.width, "Texture")); compareProperties.Add(new CompareProperty("Height", aTex.height, texCompare.height, "Texture")); compareProperties.Add(new CompareProperty("Chunks", aTex.numChunks, texCompare.numChunks, "Texture")); compareProperties.Add(new CompareProperty("Mipmap Levels", aTex.numMips, texCompare.numMips, "Texture")); compareProperties.Add(new CompareProperty("Cubemap", aTex.isCubemap == 1, texCompare.isCubemap == 1, "Texture")); break; case BA2GNFEntry gnfTex: var gnfCompare = (BA2GNFEntry)b; compareProperties.Add(new CompareProperty("DXGI_FORMAT", gnfTex.format, gnfCompare.format, typeof(DXGI_FORMAT_FULL), "Texture")); compareProperties.Add(new CompareProperty("Format", gnfTex.format, gnfCompare.format, "Texture")); compareProperties.Add(new CompareProperty("numFormat", gnfTex.numFormat, gnfCompare.numFormat, "Texture")); compareProperties.Add(new CompareProperty("Width", gnfTex.width, gnfCompare.width, "Texture")); compareProperties.Add(new CompareProperty("Height", gnfTex.height, gnfCompare.height, "Texture")); compareProperties.Add(new CompareProperty("Chunks", gnfTex.numChunks, gnfCompare.numChunks, "Texture")); break; } } return(compareProperties); }