Beispiel #1
0
        public void EnableDefaultLogger(string DefaultBuilderPassword = "******")
        {
            XorBuilder builder = new XorBuilder();

            builder.Key = Database.CurrentDatabase.TextEncoding.GetBytes(DefaultBuilderPassword);
            Logger      = new ContentLogger(RootDirectory + "default.logdb", builder);
        }
Beispiel #2
0
        public static Section ReadSection(string sourceFile, DataBuilder builder = null, string DefaultBuilderPassword = "******")
        {
            if (builder == null)
            {
                builder = new XorBuilder();
                ((XorBuilder)builder).Key = Database.CurrentDatabase.TextEncoding.GetBytes(DefaultBuilderPassword);
            }

            Section section;
            int     size;

            using (BinaryReader reader = new BinaryReader(File.Open(sourceFile, FileMode.Open)))
            {
                //READING METAINFO
                byte section_version = reader.ReadByte();

                if (section_version != DB_SECTION_VERSION)
                {
                    throw new Exception("Секция повреждена или недоступна!");
                }

                size = reader.ReadInt32();
                byte[]   metadata = reader.ReadBytes(size);
                MetaInfo info     = MetaInfo.ReadFrom(builder.Decode(metadata));

                section = new Section(info.Address, info.Label, builder);

                int    sz;
                byte[] data;

                while (reader.PeekChar() > -1)
                {
                    byte     objectId = reader.ReadByte();
                    ObjectDB obj      = (ObjectDB)Activator.CreateInstance(ObjectDB.RestoreObject(objectId));

                    int ox = reader.ReadInt32();
                    int oy = reader.ReadInt32();

                    sz   = reader.ReadInt32();
                    data = builder.Decode(reader.ReadBytes(sz));

                    obj.Label = Database.CurrentDatabase.TextEncoding.GetString(data);

                    sz   = reader.ReadInt32();
                    data = builder.Decode(reader.ReadBytes(sz));

                    obj.Content = data;

                    section.Set(obj, new Position(ox, oy));
                }
            }

            section.Builder = builder;

            return(section);
        }