public override void WriteHeader(BinaryWriter bw, DBEntry entry) { base.WriteHeader(bw, entry); Tuple <int, int> minmax = entry.MinMax(); if (MaxId == 0) //Irrelevant if header doesn't use this { minmax = new Tuple <int, int>(0, 0); } bw.Write(TableHash); bw.Write(Build); bw.Write(TimeStamp); bw.Write(minmax.Item1); bw.Write(minmax.Item2); bw.Write(Locale); bw.Write(CopyTableSize); if (MaxId != 0 && Build > 12880) { List <int> IndiciesTable = new List <int>(); List <short> StringLengthTable = new List <short>(); Dictionary <int, short> stringlengths = entry.GetStringLengths(); int x = 0; for (int i = minmax.Item1; i <= minmax.Item2; i++) { if (stringlengths.ContainsKey(i)) { StringLengthTable.Add(stringlengths[i]); IndiciesTable.Add(++x); } else { IndiciesTable.Add(0); StringLengthTable.Add(0); } } //Write the data bw.WriteArray(IndiciesTable.ToArray()); bw.WriteArray(StringLengthTable.ToArray()); } }