private void LoadTag() { //Create a new Tag object from file Tag = new Tag(txbFilename.Text); Loaded = true; DisplayTagInformation(); }
private void LoadTags(string Folder) { LoadedTagMeta = null; LoadedTags = new List<Tag>(); tagList.Items.Clear(); bitmapExplorer.Items.Clear(); string[] Files = Directory.GetFiles(Folder, "*.bitm.h2tag", SearchOption.AllDirectories); foreach (string s in Files) { Tag t = new Tag(s); LoadedTags.Add(t); string label = CleanFilename(t.Filename, Folder); tagList.Items.Add(label); } }
void ProcessPointersAndValues(Tag tag, int offset, int magic) { valueCache.Clear(); pointerCache.Clear(); rawCache.Clear(); Block block = Blocks.Types[tag.Type]; binReader = new BinaryReader(tag.TagStream); binWriter = new BinaryWriter(tag.TagStream); ProcessBlock(block, 1, 0, tag.TagStream); for (int i = 0; i < valueCache.Count; i++) { int index; switch (valueCache.Values[i].Type) { case ValueType.StringId: tag.TagStream.Position = valueCache.Values[i].Offset; index = binReader.ReadInt32(); tag.TagStream.Position -= 4; binWriter.Write(GetStringId(tag.StringIdNames[index])); break; case ValueType.TagId: tag.TagStream.Position = valueCache.Values[i].Offset; index = binReader.ReadInt32(); if (index == -1) continue; tag.TagStream.Position -= 4; binWriter.Write(GetTagId(tag.TagReferences[index])); break; case ValueType.TagReference: tag.TagStream.Position = valueCache.Values[i].Offset + 4; index = binReader.ReadInt32(); if (index == -1) continue; tag.TagStream.Position -= 8; byte[] bytes = Encoding.UTF8.GetBytes(Globals.GetDirtyType(Path.GetExtension(tag.TagReferences[index]).Substring(1))); binWriter.Write(bytes, 0, 4); binWriter.Write(GetTagId(tag.TagReferences[index])); break; } } for (int i = 0; i < pointerCache.Count; i++) { tag.TagStream.Position = pointerCache.Values[i].Offset; binWriter.Write(pointerCache.Values[i].Address + offset + magic); } binWriter = new BinaryWriter(file); }
void LoadTag(string filename) { if (!loadedTagnames.ContainsKey(filename)) loadedTagnames.Add(filename, loadedTagnames.Count); else return; filename += ".h2tag"; Tag tag = new Tag(filename); this.tags.Add(tag); foreach (string s in tag.TagReferences) LoadTag(s); }
void ProcessRaw(Tag tag, int rawOffset) { rawCache.Clear(); valueCache.Clear(); pointerCache.Clear(); Block block = Blocks.Types[tag.Type]; binReader = new BinaryReader(tag.TagStream); binWriter = new BinaryWriter(tag.TagStream); ProcessBlock(block, 1, 0, tag.TagStream); for (int i = 0; i < rawCache.Count; i++) { tag.TagStream.Position = rawCache.Values[i].Offset1; int index = binReader.ReadInt32(); if ((index & 0xC0000000) == 0) { tag.TagStream.Position = rawCache.Values[i].Offset0; binWriter.Write(tag.RawOffsets[index].Length); tag.TagStream.Position = rawCache.Values[i].Offset1; binWriter.Write((int)(tag.RawOffsets[index].Address + rawOffset)); } } binWriter = new BinaryWriter(file); }
/// <summary> /// Loads tag from filename and then loads all referenced tags tag references /// </summary> /// <param name="filename">filename in format of dir/filename.class, where class is CLEAN. Do NOT include file extension .h2tag</param> private void LoadTagsRecursively(string filename) { if (!filenames.ContainsKey(filename)) { filenames.Add(filename, filenames.Count); Tag tag = new Tag(filename + Tag.Path.Extension); this.tags.Add(tag); foreach (string s in tag.TagReferences) LoadTagsRecursively(s); } }
private void ProcessTagRawValues(Tag tag, int rawOffset) { rawCache.Clear(); binReader = new BinaryReader(tag.TagStream); binWriter = new BinaryWriter(tag.TagStream); Block block = Blocks.Types[tag.Type]; ProcessBlockRaw(block, 1, 0, tag.TagStream); for (int i = 0; i < rawCache.Count; i++) { tag.TagStream.Position = rawCache.Values[i].Offset1; int index = binReader.ReadInt32(); if ((index & 0xC0000000) == 0) { tag.TagStream.Position = rawCache.Values[i].Offset0; binWriter.Write(tag.ResourceInformation[index].Length); tag.TagStream.Position = rawCache.Values[i].Offset1; binWriter.Write((int)(tag.ResourceInformation[index].Address + rawOffset)); } } binWriter = new BinaryWriter(output); }
private void LoadTag(ClassTreeNode node) { foreach (DockContent dc in this.PrimaryDock.Documents) if ((string)(dc.Tag) == node.Path) { dc.Activate(); return; } switch (Sunfish.Tag.Path.GetTagType(node.Path)) { case "scnr": MetaTool mt = new MetaTool(); mt.Text = Explorer.treeView1.SelectedNode.Text; mt.Show(this.PrimaryDock, WeifenLuo.WinFormsUI.Docking.DockState.Document); Sunfish.Tag scnr = new Tag(node.Path); mt.LoadTag(scnr); break; case "bitm": BitmapTool bt = new BitmapTool(); bt.Text = Explorer.treeView1.SelectedNode.Text; bt.Show(this.PrimaryDock, WeifenLuo.WinFormsUI.Docking.DockState.Document); break; case "mode": ModelEditor modeEdit = new ModelEditor(); modeEdit.Text = Explorer.treeView1.SelectedNode.Text; modeEdit.Show(this.PrimaryDock, WeifenLuo.WinFormsUI.Docking.DockState.Document); modeEdit.LoadTag(node.Path); break; case "coll": ModelEditor collEdit = new ModelEditor(); collEdit.Text = Explorer.treeView1.SelectedNode.Text; collEdit.Show(this.PrimaryDock, WeifenLuo.WinFormsUI.Docking.DockState.Document); collEdit.LoadTag(node.Path); break; default: mt = new MetaTool(); mt.Text = Explorer.treeView1.SelectedNode.Text; mt.Show(this.PrimaryDock, WeifenLuo.WinFormsUI.Docking.DockState.Document); Sunfish.Tag tag = new Tag(node.Path); mt.LoadTag(tag); break; } }
public void UpdateScenario(Tag scenariotag) { List<Tag> tags = new List<Tag>(2); if (Tags[0].Type == "sbsp") tags.AddRange(Tags); else { tags.Add(Tags[1]); tags.Add(Tags[0]); } Tags = tags; BinaryWriter bw = new BinaryWriter(Stream); foreach (CompilerTag tag in Tags) { bw.Write(Padding.GetBytes(Stream.Position)); Entry entry = new Entry() { Offset = (int)Stream.Position, Length = (int)tag.TagStream.Length, PointerOffsets = tag.PointerOffsets, RawOffsets = tag.RawOffsets, StringIDOffsets = tag.StringIdOffsets, TagIDOffsets = tag.TagReferenceOffsets }; tag.TagStream.WriteTo(Stream); bw.Write(Padding.GetBytes(Stream.Position)); bw.Flush(); Entries.Add(entry); TagIndexers.Add(tag.ID); } BinaryReader br = new BinaryReader(scenariotag.TagStream); bw = new BinaryWriter(scenariotag.TagStream); scenariotag.TagStream.Position = 532; int address = br.ReadInt32(); scenariotag.TagStream.Position = address; bw.Write(Offset); bw.Write(Length); bw.Write(VirtualOffset); }