public void EnableDefaultLogger(string DefaultBuilderPassword = "******") { XorBuilder builder = new XorBuilder(); builder.Key = Database.CurrentDatabase.TextEncoding.GetBytes(DefaultBuilderPassword); Logger = new ContentLogger(RootDirectory + "default.logdb", builder); }
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); }