public void Work() { using (FileStream fsIn = new FileStream("x-10-handedict.txt", FileMode.Open, FileAccess.Read)) using (StreamReader sr = new StreamReader(fsIn)) using (FileStream fsOut = new FileStream("x-20-handedict.txt", FileMode.Create, FileAccess.ReadWrite)) using (StreamWriter sw = new StreamWriter(fsOut)) { RawEntry re = null; while ((re = getNext(sr)) != null) { bool isVerified = re.LnMetaVer1.Contains("Stat-Verif"); string cleansed = cleanse(re.LnVer1); // Write sw.WriteLine(re.LnId); sw.WriteLine(re.LnMetaVer1); // No change if (cleansed == re.LnVer1) { sw.WriteLine(re.LnVer1); } // Add new version else { sw.WriteLine("# " + re.LnVer1); sw.WriteLine("# Ver 2016-10-23T15:32:07Z zydeo-robot " + (isVerified ? "Stat-Verif" : "Stat-New") + " 002>Datenbereinigung"); sw.WriteLine(cleansed); } // Empty line sw.WriteLine(); } } }
public HashedEntry(RawEntry rawEntry, byte[] hash) { AudioHash = hash; TextArea = rawEntry.TextArea; CaptionType = rawEntry.CaptionType; Content = rawEntry.Content; }
private RawEntry getNext(StreamReader sr) { RawEntry res = null; string line; while ((line = sr.ReadLine()) != null) { if (line == "") { continue; } if (line.StartsWith("# ID")) { res = new RawEntry { LnId = line }; continue; } if (line.StartsWith("# Ver")) { res.LnMetaVer1 = line; continue; } res.LnVer1 = line; return(res); } return(null); }
public RawLocation GetRawLocationForTag(int ID) { // Our raw entry we will grab. RawEntry entry = null; // Loop through each RawEntry for (int x = 0; x < rawEntries.Count; x++) { if (rawEntries[x].TagID == ID) { entry = rawEntries[x]; break; } } // If our founded entry isn't null if (entry != null) { if (entry.RawLocationsIndex <= rawLocations.Count) { return(rawLocations[entry.RawLocationsIndex]); } } // Dang.. return(null); }
public override void Deserialize(Stream input) { var encoding = this.Encoding; var basePosition = input.Position; base.Deserialize(input); var endian = this.Endian; var entryCount = input.ReadValueS32(endian); var entryNameTableOffset = input.ReadValueS64(endian); var rawEntries = new RawEntry[entryCount]; for (int i = 0; i < entryCount; i++) { rawEntries[i] = RawEntry.Read(input, endian); } var entryNames = new string[entryCount]; if (entryCount > 0) { input.Position = basePosition + entryNameTableOffset; for (int i = 0; i < entryCount; i++) { var nameLength = input.ReadValueU16(endian); var name = input.ReadString(nameLength, encoding); entryNames[i] = name; } } // we're assuming the entry names match up in order with the entries var entries = new Entry[entryCount]; for (int i = 0; i < entryCount; i++) { var rawEntry = rawEntries[i]; if (rawEntry.Unknown0C != 0x00100100) { throw new FormatException(); } entries[i] = new Entry() { Name = entryNames[i], NameHash = rawEntry.NameHash, Type = rawEntry.Type, DirectoryNameHash = rawEntry.DirectoryNameHash, Unknown0C = rawEntry.Unknown0C, DataOffset = rawEntry.DataOffset, DataCompressedSize = rawEntry.DataCompressedSize, DataUncompressedSize = rawEntry.DataUncompressedSize, }; } this._Entries.Clear(); this._Entries.AddRange(entries); }
public RawLocation GetRawLocationFromRawID(int RawID) { //Our raw entry we will grab. RawEntry entry = GetRawEntryFromRawID(RawID); //If our founded entry isn't null if (entry != null) { if (entry.RawLocationsIndex <= rawLocations.Count) { return(rawLocations[entry.RawLocationsIndex]); } } return(null); }
/// <summary> /// This form of initializing the RawInformation class will load all raw information in the class, from the given map. /// </summary> /// <param name="map">The map to load information from.</param> public RawInformation(HaloMap Map) { //Set our instance of the HaloMap class map = Map; //Initialize our rawBlock List rawEntries = new RawEntryTable(Map); //Get our bsp. RawEntry bsp = rawEntries[rawEntries.Count - 1]; //Load our external maps list externalMaps = new ExternalMapsList(Map); //Load the raw pools rawPools = new RawPoolsList(Map); //Load the raw locations rawLocations = new RawLocationsList(Map); //Load our unknowns unknowns = new Unknown3s(Map); }
public override void Create(Stream output, IEnumerable<Entry> list, ResourceOptions options, EntryCallback callback) { var sg_options = GetOptions<SteinsGateOptions> (options); Encoding encoding = sg_options.FileNameEncoding.WithFatalFallback(); long start_pos = output.Position; int callback_count = 0; uint index_size = 4; var real_entry_list = new List<RawEntry> (list.Count()); var used_names = new HashSet<string>(); foreach (var entry in list) { string name = entry.Name.Replace (@"\", "/"); if (!used_names.Add (name)) // duplicate name continue; var header_entry = new RawEntry { Name = entry.Name }; try { header_entry.IndexName = encoding.GetBytes (name); } catch (EncoderFallbackException X) { throw new InvalidFileName (entry.Name, arcStrings.MsgIllegalCharacters, X); } index_size += (uint)header_entry.IndexName.Length + 16; real_entry_list.Add (header_entry); } output.Seek (4+index_size, SeekOrigin.Current); foreach (var entry in real_entry_list) { using (var input = File.Open (entry.Name, FileMode.Open, FileAccess.Read)) { var file_size = input.Length; if (file_size > uint.MaxValue) throw new FileSizeException(); entry.Offset = output.Position; entry.Size = (uint)file_size; if (null != callback) callback (callback_count++, entry, arcStrings.MsgAddingFile); using (var stream = new SteinsGateEncryptedStream (output)) input.CopyTo (stream); } } if (null != callback) callback (callback_count++, null, arcStrings.MsgWritingIndex); output.Position = start_pos; output.WriteByte ((byte)(index_size & 0xff)); output.WriteByte ((byte)((index_size >> 8) & 0xff)); output.WriteByte ((byte)((index_size >> 16) & 0xff)); output.WriteByte ((byte)((index_size >> 24) & 0xff)); var encrypted_stream = new SteinsGateEncryptedStream (output); using (var header = new BinaryWriter (encrypted_stream)) { header.Write (real_entry_list.Count); foreach (var entry in real_entry_list) { header.Write (entry.IndexName.Length); header.Write (entry.IndexName); header.Write ((uint)entry.Size); header.Write ((long)entry.Offset); } } }
public override void Create(Stream output, IEnumerable <Entry> list, ResourceOptions options, EntryCallback callback) { var sg_options = GetOptions <SteinsGateOptions> (options); Encoding encoding = sg_options.FileNameEncoding.WithFatalFallback(); long start_pos = output.Position; int callback_count = 0; uint index_size = 4; var real_entry_list = new List <RawEntry> (list.Count()); var used_names = new HashSet <string>(); foreach (var entry in list) { string name = entry.Name.Replace(@"\", "/"); if (!used_names.Add(name)) // duplicate name { continue; } var header_entry = new RawEntry { Name = entry.Name }; try { header_entry.IndexName = encoding.GetBytes(name); } catch (EncoderFallbackException X) { throw new InvalidFileName(entry.Name, arcStrings.MsgIllegalCharacters, X); } index_size += (uint)header_entry.IndexName.Length + 16; real_entry_list.Add(header_entry); } output.Seek(4 + index_size, SeekOrigin.Current); foreach (var entry in real_entry_list) { using (var input = File.Open(entry.Name, FileMode.Open, FileAccess.Read)) { var file_size = input.Length; if (file_size > uint.MaxValue) { throw new FileSizeException(); } entry.Offset = output.Position; entry.Size = (uint)file_size; if (null != callback) { callback(callback_count++, entry, arcStrings.MsgAddingFile); } using (var stream = new SteinsGateEncryptedStream(output)) input.CopyTo(stream); } } if (null != callback) { callback(callback_count++, null, arcStrings.MsgWritingIndex); } output.Position = start_pos; output.WriteByte((byte)(index_size & 0xff)); output.WriteByte((byte)((index_size >> 8) & 0xff)); output.WriteByte((byte)((index_size >> 16) & 0xff)); output.WriteByte((byte)((index_size >> 24) & 0xff)); var encrypted_stream = new SteinsGateEncryptedStream(output); using (var header = new BinaryWriter(encrypted_stream)) { header.Write(real_entry_list.Count); foreach (var entry in real_entry_list) { header.Write(entry.IndexName.Length); header.Write(entry.IndexName); header.Write((uint)entry.Size); header.Write((long)entry.Offset); } } }
public NewRoundPage(SessionData sessionData) { this.sd = sessionData; this.BackgroundImageSource = "SharecardBase.png"; ScrollView scrollView = new ScrollView(); //scrollView.Orientation = ScrollOrientation.Horizontal; scrollView.Orientation = ScrollOrientation.Both; Grid grid = new Grid(); holeLabel = new myLabel(); h1Label = new myLabel(); h2Label = new myLabel(); h3Label = new myLabel(); h4Label = new myLabel(); h5Label = new myLabel(); h6Label = new myLabel(); h7Label = new myLabel(); h8Label = new myLabel(); h9Label = new myLabel(); h10Label = new myLabel(); h11Label = new myLabel(); h12Label = new myLabel(); h13Label = new myLabel(); h14Label = new myLabel(); h15Label = new myLabel(); h16Label = new myLabel(); h17Label = new myLabel(); h18Label = new myLabel(); holeLabel.Text = "Hole Number:"; h1Label.Text = "#1"; h2Label.Text = "#2"; h3Label.Text = "#3"; h4Label.Text = "#4"; h5Label.Text = "#5"; h6Label.Text = "#6"; h7Label.Text = "#7"; h8Label.Text = "#8"; h9Label.Text = "#9"; h10Label.Text = "#10"; h11Label.Text = "#11"; h12Label.Text = "#12"; h13Label.Text = "#13"; h14Label.Text = "#14"; h15Label.Text = "#15"; h16Label.Text = "#16"; h17Label.Text = "#17"; h18Label.Text = "#18"; holeParLabel = new parLabel(); p1Label = new parLabel(); p2Label = new parLabel(); p3Label = new parLabel(); p4Label = new parLabel(); p5Label = new parLabel(); p6Label = new parLabel(); p7Label = new parLabel(); p8Label = new parLabel(); p9Label = new parLabel(); p10Label = new parLabel(); p11Label = new parLabel(); p12Label = new parLabel(); p13Label = new parLabel(); p14Label = new parLabel(); p15Label = new parLabel(); p16Label = new parLabel(); p17Label = new parLabel(); p18Label = new parLabel(); holeParLabel.Text = "Par:"; p1Label.Text = "0"; p2Label.Text = "0"; p3Label.Text = "0"; p4Label.Text = "0"; p5Label.Text = "0"; p6Label.Text = "0"; p7Label.Text = "0"; p8Label.Text = "0"; p9Label.Text = "0"; p10Label.Text = "0"; p11Label.Text = "0"; p12Label.Text = "0"; p13Label.Text = "0"; p14Label.Text = "0"; p15Label.Text = "0"; p16Label.Text = "0"; p17Label.Text = "0"; p18Label.Text = "0"; baseLabel = new myLabel(); baseLabel.Text = "Score:"; hScoreLabel = new HandicapScoreLabel(); hScoreLabel.Text = "Handicap Strokes"; handicapLabel = new HandicapStrokeLabel(); handicapLabel.Text = "Course Handicap:"; specialLabel = new SpecialStrokeLabel(); specialLabel.Text = "Beer Strokes:"; h1rEntry = new RawEntry(); h2rEntry = new RawEntry(); h3rEntry = new RawEntry(); h4rEntry = new RawEntry(); h5rEntry = new RawEntry(); h6rEntry = new RawEntry(); h7rEntry = new RawEntry(); h8rEntry = new RawEntry(); h9rEntry = new RawEntry(); h10rEntry = new RawEntry(); h11rEntry = new RawEntry(); h12rEntry = new RawEntry(); h13rEntry = new RawEntry(); h14rEntry = new RawEntry(); h15rEntry = new RawEntry(); h16rEntry = new RawEntry(); h17rEntry = new RawEntry(); h18rEntry = new RawEntry(); h1rEntry.TextChanged += H1rEntry_TextChanged; h2rEntry.TextChanged += H2rEntry_TextChanged; h3rEntry.TextChanged += H3rEntry_TextChanged; h4rEntry.TextChanged += H4rEntry_TextChanged; h5rEntry.TextChanged += H5rEntry_TextChanged; h6rEntry.TextChanged += H6rEntry_TextChanged; h7rEntry.TextChanged += H7rEntry_TextChanged; h8rEntry.TextChanged += H8rEntry_TextChanged; h9rEntry.TextChanged += H9rEntry_TextChanged; h10rEntry.TextChanged += H10rEntry_TextChanged; h11rEntry.TextChanged += H11rEntry_TextChanged; h12rEntry.TextChanged += H12rEntry_TextChanged; h13rEntry.TextChanged += H13rEntry_TextChanged; h14rEntry.TextChanged += H14rEntry_TextChanged; h15rEntry.TextChanged += H15rEntry_TextChanged; h16rEntry.TextChanged += H16rEntry_TextChanged; h17rEntry.TextChanged += H17rEntry_TextChangedAsync; h18rEntry.TextChanged += H18rEntry_TextChanged; h1hcEntry = new HandicapStrokeLabel(); h2hcEntry = new HandicapStrokeLabel(); h3hcEntry = new HandicapStrokeLabel(); h4hcEntry = new HandicapStrokeLabel(); h5hcEntry = new HandicapStrokeLabel(); h6hcEntry = new HandicapStrokeLabel(); h7hcEntry = new HandicapStrokeLabel(); h8hcEntry = new HandicapStrokeLabel(); h9hcEntry = new HandicapStrokeLabel(); h10hcEntry = new HandicapStrokeLabel(); h11hcEntry = new HandicapStrokeLabel(); h12hcEntry = new HandicapStrokeLabel(); h13hcEntry = new HandicapStrokeLabel(); h14hcEntry = new HandicapStrokeLabel(); h15hcEntry = new HandicapStrokeLabel(); h16hcEntry = new HandicapStrokeLabel(); h17hcEntry = new HandicapStrokeLabel(); h18hcEntry = new HandicapStrokeLabel(); h1spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h1sp"); h2spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h2sp"); h3spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h3sp"); h4spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h4sp"); h5spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h5sp"); h6spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h6sp"); h7spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h7sp"); h8spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h8sp"); h9spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h9sp"); h10spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h10sp"); h11spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h11sp"); h12spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h12sp"); h13spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h13sp"); h14spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h14sp"); h15spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h15sp"); h16spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h16sp"); h17spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h17sp"); h18spEntry = new SpecialStrokeEntry(sd.currentScoreCard.id, "h18sp"); h1adjEntry = new HAdjustedScoreLabel(); h2adjEntry = new HAdjustedScoreLabel(); h3adjEntry = new HAdjustedScoreLabel(); h4adjEntry = new HAdjustedScoreLabel(); h5adjEntry = new HAdjustedScoreLabel(); h6adjEntry = new HAdjustedScoreLabel(); h7adjEntry = new HAdjustedScoreLabel(); h8adjEntry = new HAdjustedScoreLabel(); h9adjEntry = new HAdjustedScoreLabel(); h10adjEntry = new HAdjustedScoreLabel(); h11adjEntry = new HAdjustedScoreLabel(); h12adjEntry = new HAdjustedScoreLabel(); h13adjEntry = new HAdjustedScoreLabel(); h14adjEntry = new HAdjustedScoreLabel(); h15adjEntry = new HAdjustedScoreLabel(); h16adjEntry = new HAdjustedScoreLabel(); h17adjEntry = new HAdjustedScoreLabel(); h18adjEntry = new HAdjustedScoreLabel(); int optionsRow = 0; int holeRow = optionsRow + 1; int parRow = holeRow + 1; int handicapRow = parRow + 1; int rawRow = handicapRow + 1; int hScoreRow = rawRow + 1; int specialRow = hScoreRow + 1; addPlayersButton = new Button(); addPlayersButton.Text = "Add Players"; addPlayersButton.Clicked += AddPlayersButton_Clicked; viewLeaderBoardButton = new Button(); viewLeaderBoardButton.Text = "View LeaderBoard"; viewLeaderBoardButton.Clicked += ViewLeaderBoardButton_Clicked; grid.Children.Add(addPlayersButton, 0, optionsRow); grid.Children.Add(viewLeaderBoardButton, 1, optionsRow); grid.Children.Add(holeLabel, 0, holeRow); grid.Children.Add(h1Label, 1, holeRow); grid.Children.Add(h2Label, 2, holeRow); grid.Children.Add(h3Label, 3, holeRow); grid.Children.Add(h4Label, 4, holeRow); grid.Children.Add(h5Label, 5, holeRow); grid.Children.Add(h6Label, 6, holeRow); grid.Children.Add(h7Label, 7, holeRow); grid.Children.Add(h8Label, 8, holeRow); grid.Children.Add(h9Label, 9, holeRow); grid.Children.Add(h10Label, 10, holeRow); grid.Children.Add(h11Label, 11, holeRow); grid.Children.Add(h12Label, 12, holeRow); grid.Children.Add(h13Label, 13, holeRow); grid.Children.Add(h14Label, 14, holeRow); grid.Children.Add(h15Label, 15, holeRow); grid.Children.Add(h16Label, 16, holeRow); grid.Children.Add(h17Label, 17, holeRow); grid.Children.Add(h18Label, 18, holeRow); grid.Children.Add(holeParLabel, 0, parRow); grid.Children.Add(p1Label, 1, parRow); grid.Children.Add(p2Label, 2, parRow); grid.Children.Add(p3Label, 3, parRow); grid.Children.Add(p4Label, 4, parRow); grid.Children.Add(p5Label, 5, parRow); grid.Children.Add(p6Label, 6, parRow); grid.Children.Add(p7Label, 7, parRow); grid.Children.Add(p8Label, 8, parRow); grid.Children.Add(p9Label, 9, parRow); grid.Children.Add(p10Label, 10, parRow); grid.Children.Add(p11Label, 11, parRow); grid.Children.Add(p12Label, 12, parRow); grid.Children.Add(p13Label, 13, parRow); grid.Children.Add(p14Label, 14, parRow); grid.Children.Add(p15Label, 15, parRow); grid.Children.Add(p16Label, 16, parRow); grid.Children.Add(p17Label, 17, parRow); grid.Children.Add(p18Label, 18, parRow); grid.Children.Add(baseLabel, 0, rawRow); grid.Children.Add(hScoreLabel, 0, hScoreRow); grid.Children.Add(handicapLabel, 0, handicapRow); grid.Children.Add(specialLabel, 0, specialRow); grid.Children.Add(h1rEntry, 1, rawRow); grid.Children.Add(h2rEntry, 2, rawRow); grid.Children.Add(h3rEntry, 3, rawRow); grid.Children.Add(h4rEntry, 4, rawRow); grid.Children.Add(h5rEntry, 5, rawRow); grid.Children.Add(h6rEntry, 6, rawRow); grid.Children.Add(h7rEntry, 7, rawRow); grid.Children.Add(h8rEntry, 8, rawRow); grid.Children.Add(h9rEntry, 9, rawRow); grid.Children.Add(h10rEntry, 10, rawRow); grid.Children.Add(h11rEntry, 11, rawRow); grid.Children.Add(h12rEntry, 12, rawRow); grid.Children.Add(h13rEntry, 13, rawRow); grid.Children.Add(h14rEntry, 14, rawRow); grid.Children.Add(h15rEntry, 15, rawRow); grid.Children.Add(h16rEntry, 16, rawRow); grid.Children.Add(h17rEntry, 17, rawRow); grid.Children.Add(h18rEntry, 18, rawRow); grid.Children.Add(h1hcEntry, 1, handicapRow); grid.Children.Add(h2hcEntry, 2, handicapRow); grid.Children.Add(h3hcEntry, 3, handicapRow); grid.Children.Add(h4hcEntry, 4, handicapRow); grid.Children.Add(h5hcEntry, 5, handicapRow); grid.Children.Add(h6hcEntry, 6, handicapRow); grid.Children.Add(h7hcEntry, 7, handicapRow); grid.Children.Add(h8hcEntry, 8, handicapRow); grid.Children.Add(h9hcEntry, 9, handicapRow); grid.Children.Add(h10hcEntry, 10, handicapRow); grid.Children.Add(h11hcEntry, 11, handicapRow); grid.Children.Add(h12hcEntry, 12, handicapRow); grid.Children.Add(h13hcEntry, 13, handicapRow); grid.Children.Add(h14hcEntry, 14, handicapRow); grid.Children.Add(h15hcEntry, 15, handicapRow); grid.Children.Add(h16hcEntry, 16, handicapRow); grid.Children.Add(h17hcEntry, 17, handicapRow); grid.Children.Add(h18hcEntry, 18, handicapRow); grid.Children.Add(h1adjEntry, 1, hScoreRow); grid.Children.Add(h2adjEntry, 2, hScoreRow); grid.Children.Add(h3adjEntry, 3, hScoreRow); grid.Children.Add(h4adjEntry, 4, hScoreRow); grid.Children.Add(h5adjEntry, 5, hScoreRow); grid.Children.Add(h6adjEntry, 6, hScoreRow); grid.Children.Add(h7adjEntry, 7, hScoreRow); grid.Children.Add(h8adjEntry, 8, hScoreRow); grid.Children.Add(h9adjEntry, 9, hScoreRow); grid.Children.Add(h10adjEntry, 10, hScoreRow); grid.Children.Add(h11adjEntry, 11, hScoreRow); grid.Children.Add(h12adjEntry, 12, hScoreRow); grid.Children.Add(h13adjEntry, 13, hScoreRow); grid.Children.Add(h14adjEntry, 14, hScoreRow); grid.Children.Add(h15adjEntry, 15, hScoreRow); grid.Children.Add(h16adjEntry, 16, hScoreRow); grid.Children.Add(h17adjEntry, 17, hScoreRow); grid.Children.Add(h18adjEntry, 18, hScoreRow); grid.Children.Add(h1spEntry, 1, specialRow); grid.Children.Add(h2spEntry, 2, specialRow); grid.Children.Add(h3spEntry, 3, specialRow); grid.Children.Add(h4spEntry, 4, specialRow); grid.Children.Add(h5spEntry, 5, specialRow); grid.Children.Add(h6spEntry, 6, specialRow); grid.Children.Add(h7spEntry, 7, specialRow); grid.Children.Add(h8spEntry, 8, specialRow); grid.Children.Add(h9spEntry, 9, specialRow); grid.Children.Add(h10spEntry, 10, specialRow); grid.Children.Add(h11spEntry, 11, specialRow); grid.Children.Add(h12spEntry, 12, specialRow); grid.Children.Add(h13spEntry, 13, specialRow); grid.Children.Add(h14spEntry, 14, specialRow); grid.Children.Add(h15spEntry, 15, specialRow); grid.Children.Add(h16spEntry, 16, specialRow); grid.Children.Add(h17spEntry, 17, specialRow); grid.Children.Add(h18spEntry, 18, specialRow); scrollView.Content = grid; Content = scrollView; }
public override void Deserialize(Stream input) { var encoding = this.Encoding; var basePosition = input.Position; base.Deserialize(input); var endian = this.Endian; var entryCount = input.ReadValueS32(endian); var entryNameTableOffset = input.ReadValueS64(endian); var rawEntries = new RawEntry[entryCount]; for (int i = 0; i < entryCount; i++) { rawEntries[i] = RawEntry.Read(input, endian); } var entryNames = new string[entryCount]; if (entryCount > 0) { input.Position = basePosition + entryNameTableOffset; for (int i = 0; i < entryCount; i++) { var nameLength = input.ReadValueU16(endian); var name = input.ReadString(nameLength, encoding); entryNames[i] = name; } } // we're assuming the entry names match up in order with the entries var entries = new Entry[entryCount]; for (int i = 0; i < entryCount; i++) { var rawEntry = rawEntries[i]; var rawMipMaps = rawEntry.MipMaps; var mipMaps = new MipMap[rawMipMaps.Length]; for (int j = 0; j < rawMipMaps.Length; j++) { var rawMipMap = rawMipMaps[j]; mipMaps[j] = new MipMap() { DataOffset = rawMipMap.DataOffset, DataCompressedSize = rawMipMap.DataCompressedSize, DataUncompressedSize = rawMipMap.DataUncompressedSize, IndexStart = rawMipMap.IndexStart, IndexEnd = rawMipMap.IndexEnd, }; } entries[i] = new Entry() { Name = entryNames[i], NameHash = rawEntry.NameHash, Type = rawEntry.Type, DirectoryNameHash = rawEntry.DirectoryNameHash, Unknown0C = rawEntry.Unknown0C, Height = rawEntry.Height, Width = rawEntry.Width, MipMapCount = rawEntry.MipMapCount, Format = rawEntry.Format, Unknown16 = rawEntry.Unknown16, Unknown17 = rawEntry.Unknown17, MipMaps = mipMaps, }; } this._Entries.Clear(); this._Entries.AddRange(entries); }