internal static System.Collections.Generic.List <Els_kom_Core.Classes.EntryVer> Make_entries_v4(this Els_kom_Core.Classes.KOMStream kOMStream, string xmldata, int entry_count) { System.Collections.Generic.List <Els_kom_Core.Classes.EntryVer> entries = new System.Collections.Generic.List <Els_kom_Core.Classes.EntryVer>(); var xml = System.Xml.Linq.XElement.Parse(xmldata); foreach (var fileElement in xml.Elements("File")) { var nameAttribute = fileElement.Attribute("Name"); var name = nameAttribute?.Value ?? "no value"; var sizeAttribute = fileElement.Attribute("Size"); var size = sizeAttribute == null ? -1 : System.Convert.ToInt32(sizeAttribute.Value); var CompressedSizeAttribute = fileElement.Attribute("CompressedSize"); var CompressedSize = CompressedSizeAttribute == null ? -1 : System.Convert.ToInt32(CompressedSizeAttribute.Value); var ChecksumAttribute = fileElement.Attribute("Checksum"); var Checksum = ChecksumAttribute == null ? -1 : int.Parse(ChecksumAttribute.Value, System.Globalization.NumberStyles.HexNumber); var FileTimeAttribute = fileElement.Attribute("FileTime"); var FileTime = FileTimeAttribute == null ? -1 : int.Parse(FileTimeAttribute.Value, System.Globalization.NumberStyles.HexNumber); var AlgorithmAttribute = fileElement.Attribute("Algorithm"); var Algorithm = AlgorithmAttribute == null ? -1 : System.Convert.ToInt32(AlgorithmAttribute.Value); // on v4 at least on Elsword there is now an MappedID attribute. // this is even more of an reason to store some cache // file for not only kom v3 for the algorithm 2 & 3 // files to be able to get repacked to those // algorithm’s but also to store these unique // map id’s to this version of kom. var MappedIDAttribute = fileElement.Attribute("MappedID"); var MappedID = MappedIDAttribute?.Value ?? "no value"; var entry = new Els_kom_Core.Classes.EntryVer(name, size, CompressedSize, Checksum, FileTime, Algorithm, MappedID); entries.Add(entry); } return(entries); }
internal static System.Collections.Generic.List <Els_kom_Core.Classes.EntryVer> Make_entries_v2(this Els_kom_Core.Classes.KOMStream kOMStream, int entrycount, System.IO.BinaryReader reader) { System.Collections.Generic.List <Els_kom_Core.Classes.EntryVer> entries = new System.Collections.Generic.List <Els_kom_Core.Classes.EntryVer>(); for (int i = 0; i < entrycount; i++) { kOMStream.ReadInFile(reader, out string key, 60, System.Text.Encoding.ASCII); kOMStream.ReadInFile(reader, out int originalsize); kOMStream.ReadInFile(reader, out int compressedSize); kOMStream.ReadInFile(reader, out int offset); var entry = new Els_kom_Core.Classes.EntryVer(kOMStream.GetSafeString(key), originalsize, compressedSize, offset); entries.Add(entry); } return(entries); }
internal static System.Collections.Generic.List <Els_kom_Core.Classes.EntryVer> Make_entries_v3(this Els_kom_Core.Classes.KOMStream kOMStream, string xmldata, int entry_count) { System.Collections.Generic.List <Els_kom_Core.Classes.EntryVer> entries = new System.Collections.Generic.List <Els_kom_Core.Classes.EntryVer>(); var xml = System.Xml.Linq.XElement.Parse(xmldata); foreach (var fileElement in xml.Elements("File")) { var nameAttribute = fileElement.Attribute("Name"); var name = nameAttribute?.Value ?? "no value"; var sizeAttribute = fileElement.Attribute("Size"); var size = sizeAttribute == null ? -1 : System.Convert.ToInt32(sizeAttribute.Value); var CompressedSizeAttribute = fileElement.Attribute("CompressedSize"); var CompressedSize = CompressedSizeAttribute == null ? -1 : System.Convert.ToInt32(CompressedSizeAttribute.Value); var ChecksumAttribute = fileElement.Attribute("Checksum"); var Checksum = ChecksumAttribute == null ? -1 : int.Parse(ChecksumAttribute.Value, System.Globalization.NumberStyles.HexNumber); var FileTimeAttribute = fileElement.Attribute("FileTime"); var FileTime = FileTimeAttribute == null ? -1 : int.Parse(FileTimeAttribute.Value, System.Globalization.NumberStyles.HexNumber); var AlgorithmAttribute = fileElement.Attribute("Algorithm"); var Algorithm = AlgorithmAttribute == null ? -1 : System.Convert.ToInt32(AlgorithmAttribute.Value); var entry = new Els_kom_Core.Classes.EntryVer(name, size, CompressedSize, Checksum, FileTime, Algorithm); entries.Add(entry); } return(entries); }