Exemple #1
0
        public bool Read(DBHeader counterpart, DBEntry dbentry)
        {
            WDB6CounterPart = counterpart as WDB6;
            if (WDB6CounterPart == null)
            {
                return(false);
            }

            var entries = Entries.Where(x => (x.Locale == counterpart.Locale || x.Locale == 0) && x.TableHash == counterpart.TableHash);

            if (entries.Any())
            {
                OffsetLengths  = entries.Select(x => (int)x.Size + 4).ToArray();
                TableStructure = WDB6CounterPart.TableStructure;
                Flags          = WDB6CounterPart.Flags;
                FieldStructure = WDB6CounterPart.FieldStructure;
                RecordCount    = (uint)entries.Count();

                dbentry.LoadTableStructure();

                IEnumerable <byte> Data = new byte[0];
                foreach (var e in entries)
                {
                    Data = Data.Concat(BitConverter.GetBytes(e.RowId)).Concat(e.Data);
                }

                using (MemoryStream ms = new MemoryStream(Data.ToArray()))
                    using (BinaryReader br = new BinaryReader(ms))
                        new DBReader().ReadIntoTable(ref dbentry, br, new Dictionary <int, string>());

                return(true);
            }

            return(false);
        }