public Section LoadSection(string label, byte penId) { label = Locale.ToUpper(label); string source = Database.CurrentDatabase.RootDirectory + Database.DB_SECTION_FFORMAT.Replace("{filename}", Sign.CreateSectionSignature(label, penId)); return(LoadSection(source)); }
/* * Data Format: <VER-DB><DEEP-METAINFO><METAINFO><1=ID><1=X><1=Y><4=DEEP-LABEL><N=DATA-LABEL><4=DEEP-CONTENT><N=CONTENT> */ private void Save() { string source = Database.CurrentDatabase.RootDirectory + Database.DB_SECTION_FFORMAT.Replace("{filename}", Sign.CreateSectionSignature(Info.Label, Info.Address)); ObjectDB current; byte[] label; using (BinaryWriter writer = new BinaryWriter(File.Open(source, FileMode.Create))) { writer.Write(DB_SECTION_VERSION); //DATABASE TITLE (METAINFO) byte[] meta = Builder.Encode(Info.Data); writer.Write(meta.Length); writer.Write(meta); //BLOCKS OF DATA for (int offsetX = 0; offsetX < 256; offsetX++) { for (int offsetY = 0; offsetY < 256; offsetY++) { if (Content[offsetX, offsetY] != null) { current = Content[offsetX, offsetY]; writer.Write(current.Id); writer.Write(offsetX); writer.Write(offsetY); label = Builder.Encode(Database.CurrentDatabase.TextEncoding.GetBytes(current.Label)); writer.Write(label.Length); writer.Write(label); byte[] currdat = Builder.Encode(current.Content); writer.Write(currdat.Length); writer.Write(currdat); } } } } if (Logger != null) { Logger.Push(ContentLogger.EVENT_SAVED_S, "Section '" + Label + " saved on " + Address); } }
public byte[] GetIdsByLabel(string label) { List <byte> result = new List <byte>(); Update(); for (int i = 0; i < 256; i++) { string sign = Sign.CreateSectionSignature(Locale.ToUpper(label), (byte)i); if (Sections.IndexOf(sign) != -1) { result.Add((byte)i); } } return(result.ToArray()); }