/// <summary> /// Adds the three Structs of a tint to a specified node. /// </summary> /// <param name="node"></param> void AddTints(TreeNode node) { GffData.Field field; Sortable part, val; for (int i = 1; i != 4; ++i) { field = new GffData.Field(); field.type = FieldTypes.Struct; field.label = i.ToString(); field.Struct = new Struct(); field.Struct.typeid = 0; // <- that's what's in the UTCs I've looked at. string text = GeneralGFF.ConstructNodetext(field); part = new Sortable(text, field.label); part.Tag = field; node.Nodes.Add(part); var colors = new List <string>() { "a", "b", "g", "r" }; foreach (var color in colors) { field = new GffData.Field(); field.type = FieldTypes.BYTE; field.BYTE = Byte.MaxValue; field.label = color; text = GeneralGFF.ConstructNodetext(field); val = new Sortable(text, field.label); val.Tag = field; part.Nodes.Add(val); } part.Expand(); } node.Expand(); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void contextclick_AddDamageReduction(object sender, EventArgs e) { BeginUpdate(); TreeNode top = TopNode; var field = new GffData.Field(); field.type = FieldTypes.Struct; field.label = SelectedNode.Nodes.Count.ToString(); // Structs in Lists do not have a Label field.Struct = new Struct(); field.Struct.typeid = 2; // <- that's what's in the UTCs I've looked at. string text = GeneralGFF.ConstructNodetext(field); var node = new Sortable(text, field.label); node.Tag = field; int id = SelectedNode.Nodes.Add(node); field = new GffData.Field(); field.type = FieldTypes.SHORT; field.label = "DmgRedctAmt"; field.SHORT = 0; text = GeneralGFF.ConstructNodetext(field); node = new Sortable(text, field.label); node.Tag = field; SelectedNode.Nodes[id].Nodes.Add(node); field = new GffData.Field(); field.type = FieldTypes.SHORT; field.label = "DmgRedctFlags"; field.SHORT = 0; text = GeneralGFF.ConstructNodetext(field); node = new Sortable(text, field.label); node.Tag = field; SelectedNode.Nodes[id].Nodes.Add(node); field = new GffData.Field(); field.type = FieldTypes.List; field.label = "DmgRedctSubList"; text = GeneralGFF.ConstructNodetext(field); var list = new Sortable(text, field.label); list.Tag = field; SelectedNode.Nodes[id].Nodes.Add(list); field = new GffData.Field(); field.type = FieldTypes.Struct; field.label = "0"; // Structs in Lists do not have a Label field.Struct = new Struct(); field.Struct.typeid = 2; // <- that's what's in the UTCs I've looked at. text = GeneralGFF.ConstructNodetext(field); var @struct = new Sortable(text, field.label); @struct.Tag = field; list.Nodes.Add(@struct); field = new GffData.Field(); field.type = FieldTypes.SHORT; field.label = "DmgRedctSubType"; field.SHORT = 0; text = GeneralGFF.ConstructNodetext(field); node = new Sortable(text, field.label); node.Tag = field; @struct.Nodes.Add(node); field = new GffData.Field(); field.type = FieldTypes.SHORT; field.label = "DmgRedctType"; field.SHORT = 0; text = GeneralGFF.ConstructNodetext(field); node = new Sortable(text, field.label); node.Tag = field; @struct.Nodes.Add(node); SelectedNode = SelectedNode.Nodes[id]; SelectedNode.Expand(); list.Expand(); @struct.Expand(); TopNode = top; _f.GffData.Changed = true; _f.GffData = _f.GffData; EndUpdate(); node.EnsureVisible(); // yes those calls are in a specific sequence. }