public ReverbsPickerForm(Thing t) { InitializeComponent(); // Fill the list foreach (KeyValuePair <string, KeyValuePair <int, int> > reverb in General.Map.Data.Reverbs) { list.Items.Add(new ReverbListItem(reverb.Key, reverb.Value.Key, reverb.Value.Value)); } // Select suitable item foreach (var item in list.Items) { ReverbListItem rli = (ReverbListItem)item; if (rli.Arg0 == t.Args[0] && rli.Arg1 == t.Args[1]) { list.SelectedItem = item; break; } } // Select previously selected item? if (!string.IsNullOrEmpty(previousenvironmentname) && list.SelectedItem == null) { foreach (ReverbListItem item in list.Items) { if (item.ToString() == previousenvironmentname) { list.SelectedItem = item; break; } } } // Dormant? cbactiveenv.Checked = !BuilderPlug.ThingDormant(t); list.Focus(); }
public void AddSoundEnvironment(SoundEnvironment se) { TreeNode topnode = new TreeNode(se.Name); topnode.Tag = se; //mxd TreeNode thingsnode = new TreeNode("Things (" + se.Things.Count + ")"); TreeNode linedefsnode = new TreeNode("Linedefs (" + se.Linedefs.Count + ")"); int notdormant = 0; int iconindex = BuilderPlug.Me.DistinctColors.IndexOf(se.Color); //mxd int topindex = iconindex; //mxd bool nodehaswarnings = false; //mxd thingsnode.ImageIndex = iconindex; //mxd thingsnode.SelectedImageIndex = iconindex; //mxd linedefsnode.ImageIndex = iconindex; //mxd linedefsnode.SelectedImageIndex = iconindex; //mxd // Add things foreach (Thing t in se.Things) { TreeNode thingnode = new TreeNode("Thing " + t.Index); thingnode.Tag = t; thingnode.ImageIndex = iconindex; //mxd thingnode.SelectedImageIndex = iconindex; //mxd thingsnode.Nodes.Add(thingnode); if (!BuilderPlug.ThingDormant(t)) { notdormant++; } else { thingnode.Text += " (dormant)"; } } // Set the icon to warning sign and add the tooltip when there are more than 1 non-dormant things if (notdormant > 1) { thingsnode.ImageIndex = warningiconindex; thingsnode.SelectedImageIndex = warningiconindex; topindex = warningiconindex; foreach (TreeNode tn in thingsnode.Nodes) { if (!BuilderPlug.ThingDormant((Thing)tn.Tag)) { tn.ImageIndex = warningiconindex; tn.SelectedImageIndex = warningiconindex; tn.ToolTipText = "More than one thing in this\nsound environment is set to be\nactive. Set all but one thing\nto dormant."; nodewarningscount++; //mxd nodehaswarnings = true; //mxd } } } // Add linedefs foreach (Linedef ld in se.Linedefs) { bool showwarning = false; TreeNode linedefnode = new TreeNode("Linedef " + ld.Index); linedefnode.Tag = ld; linedefnode.ImageIndex = iconindex; //mxd linedefnode.SelectedImageIndex = iconindex; //mxd if (ld.Back == null || ld.Front == null) { showwarning = true; linedefnode.ToolTipText = "This line is single-sided, but has\nthe sound boundary flag set."; } else if (se.Sectors.Contains(ld.Front.Sector) && se.Sectors.Contains(ld.Back.Sector)) { showwarning = true; linedefnode.ToolTipText = "More than one thing in this\nThe sectors on both sides of\nthe line belong to the same\nsound environment."; } if (showwarning) { linedefnode.ImageIndex = warningiconindex; linedefnode.SelectedImageIndex = warningiconindex; linedefsnode.ImageIndex = warningiconindex; linedefsnode.SelectedImageIndex = warningiconindex; topindex = warningiconindex; nodewarningscount++; //mxd nodehaswarnings = true; //mxd } linedefsnode.Nodes.Add(linedefnode); } //mxd if (!showwarningsonly.Checked || nodehaswarnings) { topnode.Nodes.Add(thingsnode); topnode.Nodes.Add(linedefsnode); topnode.Tag = se; topnode.ImageIndex = topindex; topnode.SelectedImageIndex = topindex; // Sound environments will no be added in consecutive order, so we'll have to find // out where in the tree to add the node int insertionplace = 0; foreach (TreeNode tn in soundenvironments.Nodes) { if (se.ID < ((SoundEnvironment)tn.Tag).ID) { break; } insertionplace++; } soundenvironments.Nodes.Insert(insertionplace, topnode); } }