private void tsExternalReferenceAdd_Click(object sender, EventArgs e)
{
TreeNode tn = treeViewTagReflexives.SelectedNode;
reflexiveData rd = (reflexiveData)tn.Tag;
if (rd.reflexive == null)
{
MessageBox.Show("Not a reflexive!");
return;
}
WinMetaEditor.references refs = new WinMetaEditor.references();
if (rd.inTagNumber == this.meta.TagIndex)
{
refs.ident = this.meta.offset + rd.baseOffset + this.meta.magic;
refs.offset = rd.baseOffset;
refs.tagIndex = this.meta.TagIndex;
refs.tagName = this.meta.name;
refs.tagType = this.meta.type;
}
else
{
refs.tagIndex = map.Functions.ForMeta.FindMetaByOffset(rd.baseOffset);
Meta m = new Meta(map);
map.OpenMap(MapTypes.Internal);
m.ReadMetaFromMap(refs.tagIndex, true);
map.CloseMap();
refs.ident = rd.baseOffset + m.magic;
refs.offset = rd.baseOffset;
refs.tagName = m.name;
refs.tagType = m.type;
m.Dispose();
}
refs.chunkCount = rd.chunkCount;
refs.size = rd.reflexive.chunkSize;
refs.name = rd.reflexive.name;
// Check for duplicates & remove
List<WinMetaEditor.references> refList = ((WinMetaEditor)this.ParentForm).reflexiveReferences;
for (int i = 0; i < refList.Count; i++)
{
if (refList[i].ident == refs.ident)
refList.RemoveAt(i--);
}
// Always add to top of list
refList.Insert(0, refs);
}