private void refreshTreeListing(TreeNode parent)
{
if (((reflexiveData)parent.Tag).chunkCount == 0)
return;
treeViewTagReflexives.SuspendLayout();
// See if we are in the MAIN of the tag
if (parent != treeViewTagReflexives.Nodes[0])
{
reflexiveData rd = (reflexiveData)parent.Tag;
if (rd.inTagNumber != meta.TagIndex && ((reflexiveData)parent.Parent.Tag).inTagNumber != meta.TagIndex)
{
map.OpenMap(MapTypes.Internal);
BR = map.BR;
BR.BaseStream.Position = ((reflexiveData)parent.Parent.Tag).baseOffset + rd.reflexive.offset;
}
else
{
BR = new BinaryReader(meta.MS);
BR.BaseStream.Position = ((reflexiveData)parent.Parent.Tag).baseOffset + rd.reflexive.offset;
}
rd.chunkCount = BR.ReadInt32();
rd.baseOffset = BR.ReadInt32() - meta.magic + rd.chunkSelected * rd.reflexive.chunkSize;
rd.inTagNumber = map.Functions.ForMeta.FindMetaByOffset(rd.baseOffset);
if (rd.inTagNumber == meta.TagIndex)
{
rd.baseOffset -= meta.offset;
parent.ForeColor = Color.Black;
parent.ToolTipText = "Offset: " + rd.reflexive.offset.ToString();
}
else
{
map.CloseMap();
if (rd.inTagNumber != -1)
{
parent.ForeColor = Color.Red;
parent.ToolTipText = "Data Source Located in:\n[" + map.MetaInfo.TagType[rd.inTagNumber].ToLower() +
"] " + map.FileNames.Name[rd.inTagNumber].ToLower();
}
}
}
refreshTreeSubNodes(parent);
treeViewTagReflexives.ResumeLayout();
}