private void LoadTagBlockValuesAsNodes(TreeNodeCollection treeNodeCollection, TagBlock block) { //Add this TagBlock (chunk) to the Nodes treeNodeCollection.Add(block.ToString()); int index = treeNodeCollection.Count - 1; treeNodeCollection[index].ContextMenuStrip = chunkMenu; //Add the TagBlock (chunk) object to the Tag to let use edit it directly from the node treeNodeCollection[index].Tag = block; //Values might be null, dealio if (block.Values == null) return; foreach (Value val in block.Values) { //the Values can be a bunch of things, we only want the ones that are TagBlockArrays (reflexives) if (val is TagBlockArray) { treeNodeCollection[index].Nodes.Add(val.ToString()); treeNodeCollection[index].Nodes[treeNodeCollection[index].Nodes.Count - 1].ContextMenuStrip = reflexiveMenu; //Add the TagBlockArray object (reflexive) to the Tag to let us edit it directly from the node treeNodeCollection[index].Nodes[treeNodeCollection[index].Nodes.Count - 1].Tag = val; //TagBlocks also might be null, dealio if ((val as TagBlockArray).TagBlocks == null) continue; foreach (TagBlock tagBlock in (val as TagBlockArray).TagBlocks) { //Recurse LoadTagBlockValuesAsNodes(treeNodeCollection[index].Nodes[treeNodeCollection[index].Nodes.Count - 1].Nodes, tagBlock); } } } }
void ProcessTagBlocks(BlamLib.CheApe.ProjectState state, IO.XmlStream s) { foreach (XmlNode n in s.Cursor.ChildNodes) { if (n.Name != "TagBlock") { continue; } s.SaveCursor(n); var block = new TagBlock(state, s); s.RestoreCursor(); string name_str = block.ToString(); try { Blocks.Add(name_str, block); } catch (ArgumentException) { Debug.LogFile.WriteLine(CheApe.Import.kDuplicateErrorStr, "tag block definition", name_str); } } }
protected override void ProcessDefinition(XmlNode node, BlamLib.CheApe.ProjectState state, BlamLib.IO.XmlStream s) { StringIdFieldsInitialize(state); string name_str; switch (node.Name) { #region Tag Structs case "structs": s.SaveCursor(node); foreach (XmlNode n in s.Cursor.ChildNodes) { if (n.Name != "Struct") continue; s.SaveCursor(n); TagStruct block = new TagStruct(state, s); s.RestoreCursor(); name_str = block.ToString(); try { Structs.Add(name_str, block); } catch (ArgumentException) { Debug.LogFile.WriteLine(CheApe.Import.kDuplicateErrorStr, "tag struct definition", name_str); } } s.RestoreCursor(); break; #endregion #region Tag Blocks case "blocks": s.SaveCursor(node); foreach (XmlNode n in s.Cursor.ChildNodes) { if (n.Name != "TagBlock") continue; s.SaveCursor(n); TagBlock block = new TagBlock(state, s); s.RestoreCursor(); name_str = block.ToString(); try { Blocks.Add(name_str, block); } catch (ArgumentException) { Debug.LogFile.WriteLine(CheApe.Import.kDuplicateErrorStr, "tag block definition", name_str); } } s.RestoreCursor(); break; #endregion #region Tag Groups case "groups": s.SaveCursor(node); foreach (XmlNode n in s.Cursor.ChildNodes) { if (n.Name != "TagGroup") continue; s.SaveCursor(n); TagGroup group = new TagGroup(state, s); s.RestoreCursor(); name_str = group.ToString(); try { Groups.Add(name_str, group); } catch (ArgumentException) { Debug.LogFile.WriteLine(CheApe.Import.kDuplicateErrorStr, "tag group definition", name_str); } } s.RestoreCursor(); break; #endregion } }
protected override void ProcessDefinition(XmlNode node, BlamLib.CheApe.ProjectState state, BlamLib.IO.XmlStream s) { StringIdFieldsInitialize(state); string name_str; switch (node.Name) { #region Tag Structs case "structs": s.SaveCursor(node); foreach (XmlNode n in s.Cursor.ChildNodes) { if (n.Name != "Struct") { continue; } s.SaveCursor(n); TagStruct block = new TagStruct(state, s); s.RestoreCursor(); name_str = block.ToString(); try { Structs.Add(name_str, block); } catch (ArgumentException) { Debug.LogFile.WriteLine(CheApe.Import.kDuplicateErrorStr, "tag struct definition", name_str); } } s.RestoreCursor(); break; #endregion #region Tag Blocks case "blocks": s.SaveCursor(node); foreach (XmlNode n in s.Cursor.ChildNodes) { if (n.Name != "TagBlock") { continue; } s.SaveCursor(n); TagBlock block = new TagBlock(state, s); s.RestoreCursor(); name_str = block.ToString(); try { Blocks.Add(name_str, block); } catch (ArgumentException) { Debug.LogFile.WriteLine(CheApe.Import.kDuplicateErrorStr, "tag block definition", name_str); } } s.RestoreCursor(); break; #endregion #region Tag Groups case "groups": s.SaveCursor(node); foreach (XmlNode n in s.Cursor.ChildNodes) { if (n.Name != "TagGroup") { continue; } s.SaveCursor(n); TagGroup group = new TagGroup(state, s); s.RestoreCursor(); name_str = group.ToString(); try { Groups.Add(name_str, group); } catch (ArgumentException) { Debug.LogFile.WriteLine(CheApe.Import.kDuplicateErrorStr, "tag group definition", name_str); } } s.RestoreCursor(); break; #endregion } }
void ProcessTagBlocks(BlamLib.CheApe.ProjectState state, IO.XmlStream s) { foreach (XmlNode n in s.Cursor.ChildNodes) { if (n.Name != "TagBlock") continue; s.SaveCursor(n); var block = new TagBlock(state, s); s.RestoreCursor(); string name_str = block.ToString(); try { Blocks.Add(name_str, block); } catch (ArgumentException) { Debug.LogFile.WriteLine(CheApe.Import.kDuplicateErrorStr, "tag block definition", name_str); } } }