public void Update(ThreeDFloorHelperControl ctrl) { sectorBorderTexture.TextureName = threeDFloor.BorderTexture = ctrl.threeDFloor.BorderTexture; sectorTopFlat.TextureName = threeDFloor.TopFlat = ctrl.threeDFloor.TopFlat; sectorBottomFlat.TextureName = threeDFloor.BottomFlat = ctrl.threeDFloor.BottomFlat; sectorCeilingHeight.Text = ctrl.threeDFloor.TopHeight.ToString(); sectorFloorHeight.Text = ctrl.threeDFloor.BottomHeight.ToString(); borderHeightLabel.Text = (ctrl.threeDFloor.TopHeight - ctrl.threeDFloor.BottomHeight).ToString(); threeDFloor.TopHeight = ctrl.threeDFloor.TopHeight; threeDFloor.BottomHeight = ctrl.threeDFloor.BottomHeight; typeArgument.SetValue(ctrl.threeDFloor.Type); flagsArgument.SetValue(ctrl.threeDFloor.Flags); alphaArgument.SetValue(ctrl.threeDFloor.Alpha); sectorBrightness.Text = ctrl.threeDFloor.Brightness.ToString(); threeDFloor.FloorSlope = ctrl.ThreeDFloor.FloorSlope; threeDFloor.FloorSlopeOffset = ctrl.ThreeDFloor.FloorSlopeOffset; threeDFloor.CeilingSlope = ctrl.ThreeDFloor.CeilingSlope; threeDFloor.CeilingSlopeOffset = ctrl.ThreeDFloor.CeilingSlopeOffset; for (int i = 0; i < checkedListBoxSectors.Items.Count; i++) { checkedListBoxSectors.SetItemChecked(i, ctrl.checkedListBoxSectors.GetItemChecked(i)); } }
private void FillThreeDFloorPanel(List <ThreeDFloor> threedfloors) { if (threedfloors.Count > 0) { // Create a new controller instance for each linedef and set its properties foreach (ThreeDFloor tdf in threedfloors.OrderByDescending(o => o.TopHeight).ToList()) { ThreeDFloorHelperControl ctrl = GetThreeDFloorControl(); ctrl.Update(tdf); ctrl.Show(); } no3dfloorspanel.Hide(); } else { no3dfloorspanel.Show(); } // Hide all unused pool controls if (controlpool.Count - threedfloors.Count > 0) { foreach (ThreeDFloorHelperControl ctrl in controlpool.Skip(threedfloors.Count)) { ctrl.Used = false; ctrl.Hide(); } } }
public void DuplicateThreeDFloor(ThreeDFloorHelperControl ctrl) { ThreeDFloorHelperControl dup = new ThreeDFloorHelperControl(ctrl); threeDFloorPanel.Controls.Add(dup); threeDFloorPanel.ScrollControlIntoView(dup); }
// Create a duplicate of the given control public ThreeDFloorHelperControl(ThreeDFloorHelperControl ctrl) : this() { settingup = true; Update(ctrl); settingup = false; }
private void addThreeDFloorButton_Click(object sender, EventArgs e) { ThreeDFloorHelperControl ctrl = new ThreeDFloorHelperControl(); threeDFloorPanel.Controls.Add(ctrl); threeDFloorPanel.ScrollControlIntoView(ctrl); }
public void DuplicateThreeDFloor(ThreeDFloorHelperControl ctrl) { ThreeDFloorHelperControl dup = GetThreeDFloorControl(); dup.Update(ctrl); dup.Show(); threeDFloorPanel.ScrollControlIntoView(dup); }
public void addThreeDFloorButton_Click(object sender, EventArgs e) { ThreeDFloorHelperControl ctrl = GetThreeDFloorControl(); ctrl.Show(); threeDFloorPanel.ScrollControlIntoView(ctrl); no3dfloorspanel.Hide(); }
public void DetachThreeDFloor(ThreeDFloorHelperControl ctrl) { ThreeDFloorHelperControl dup = GetThreeDFloorControl(); dup.Update(ctrl); for (int i = 0; i < ctrl.checkedListBoxSectors.Items.Count; i++) { if (ctrl.checkedListBoxSectors.GetItemCheckState(i) == CheckState.Checked) { ctrl.checkedListBoxSectors.SetItemChecked(i, false); } } dup.Show(); threeDFloorPanel.ScrollControlIntoView(dup); }
// Gets a control from the pool or creates a new one private ThreeDFloorHelperControl GetThreeDFloorControl() { ThreeDFloorHelperControl ctrl = controlpool.FirstOrDefault(o => o.Used == false); if (ctrl == null) { ctrl = new ThreeDFloorHelperControl(); ctrl.Used = true; controlpool.Add(ctrl); threeDFloorPanel.Controls.Add(ctrl); } else { ctrl.SetDefaults(); ctrl.Used = true; } return(ctrl); }
private void FillThreeDFloorPanel(List <ThreeDFloor> threedfloors) { // Get rid of dummy sectors foreach (ThreeDFloorHelperControl ctrl in threeDFloorPanel.Controls) { ctrl.Sector.Dispose(); } // Clear all existing controls threeDFloorPanel.Controls.Clear(); // Create a new controller instance for each linedef and set its properties foreach (ThreeDFloor tdf in threedfloors.OrderByDescending(o => o.TopHeight).ToList()) { ThreeDFloorHelperControl ctrl = new ThreeDFloorHelperControl(tdf); threeDFloorPanel.Controls.Add(ctrl); } }
// Create a duplicate of the given control public ThreeDFloorHelperControl(ThreeDFloorHelperControl ctrl) : this() { settingup = true; sectorBorderTexture.TextureName = threeDFloor.BorderTexture = ctrl.threeDFloor.BorderTexture; sectorTopFlat.TextureName = threeDFloor.TopFlat = ctrl.threeDFloor.TopFlat; sectorBottomFlat.TextureName = threeDFloor.BottomFlat = ctrl.threeDFloor.BottomFlat; sectorCeilingHeight.Text = ctrl.threeDFloor.TopHeight.ToString(); sectorFloorHeight.Text = ctrl.threeDFloor.BottomHeight.ToString(); threeDFloor.TopHeight = ctrl.threeDFloor.TopHeight; threeDFloor.BottomHeight = ctrl.threeDFloor.BottomHeight; typeArgument.SetValue(ctrl.threeDFloor.Type); flagsArgument.SetValue(ctrl.threeDFloor.Flags); alphaArgument.SetValue(ctrl.threeDFloor.Alpha); for (int i = 0; i < checkedListBoxSectors.Items.Count; i++) { checkedListBoxSectors.SetItemChecked(i, ctrl.checkedListBoxSectors.GetItemChecked(i)); } settingup = false; }
// Create a duplicate of the given control public ThreeDFloorHelperControl(ThreeDFloorHelperControl ctrl) : this() { Update(ctrl); }
public void SplitThreeDFloor(ThreeDFloorHelperControl ctrl) { var items = new List <int>(); var controls = new List <ThreeDFloorHelperControl>(); int numsplits = 0; for (int i = 0; i < ctrl.checkedListBoxSectors.Items.Count; i++) { if (ctrl.checkedListBoxSectors.GetItemCheckState(i) == CheckState.Checked) { items.Add(i); } } int useitem = items.Count - 1; /* * Case 1: all tagged sectors are also selected sectors. In this case we can reuse * the original control, so one less additional control is needed * Case 2: multiple tagged sectors are also selected sectors. In this case we can * reuse the original control, so one less additional control is needed * Case 3: only one tagged sector is also the selected sector. In this case we * have to add exactly one additional control */ controls.Add(ctrl); if (items.Count == 1) { numsplits = 1; } else { numsplits = items.Count - 1; } for (int i = 0; i < numsplits; i++) { var newctrl = GetThreeDFloorControl(); newctrl.Update(ctrl); newctrl.Show(); controls.Add(newctrl); } for (int i = controls.Count - 1; i >= 0; i--) { for (int j = 0; j < items.Count; j++) { controls[i].checkedListBoxSectors.SetItemChecked(j, false); } if (useitem >= 0) { controls[i].checkedListBoxSectors.SetItemChecked(items[useitem], true); } useitem--; } }
/// <summary> /// Splits the 3D floor, creating a new 3D floor for every checked sector /// </summary> /// <param name="ctrl">The control for the 3D floor that's to be split</param> public void SplitThreeDFloor(ThreeDFloorHelperControl ctrl) { List <int> items = new List <int>(); List <ThreeDFloorHelperControl> controls = new List <ThreeDFloorHelperControl>() { ctrl }; int numsplits = 0; // Create a list of all checked sectors for (int i = 0; i < ctrl.checkedListBoxSectors.Items.Count; i++) { if (ctrl.checkedListBoxSectors.GetItemCheckState(i) == CheckState.Checked) { items.Add(i); } } int useitem = items.Count - 1; /* * Case 1: all tagged sectors are also selected sectors. In this case we can reuse * the original control, so one less additional control is needed * Case 2: multiple tagged sectors are also selected sectors. In this case we can * reuse the original control, so one less additional control is needed * Case 3: only one tagged sector is also the selected sector. In this case we * have to add exactly one additional control */ if (items.Count == 1) { numsplits = 1; } else { numsplits = items.Count - 1; } // Get new controls for the additional 3D floors for (int i = 0; i < numsplits; i++) { var newctrl = GetThreeDFloorControl(); newctrl.Update(ctrl); controls.Add(newctrl); } // Update the ckeckboxes of the controls to reflect the split 3D floors for (int i = controls.Count - 1; i >= 0; i--) { // Uncheck all sectors... for (int j = 0; j < items.Count; j++) { controls[i].checkedListBoxSectors.SetItemChecked(items[j], false); } // ... and only check a single one if (useitem >= 0) { controls[i].checkedListBoxSectors.SetItemChecked(items[useitem], true); } useitem--; } // Show the new controls foreach (Control c in controls) { c.Show(); } }
public void SplitThreeDFloor(ThreeDFloorHelperControl ctrl) { var items = new List <int>(); var controls = new List <ThreeDFloorHelperControl>(); int startat = 1; int numsplits = 0; for (int i = 0; i < ctrl.checkedListBoxSectors.Items.Count; i++) { // if (ctrl.checkedListBoxSectors.GetItemChecked(i)) if (ctrl.checkedListBoxSectors.GetItemCheckState(i) == CheckState.Checked) { items.Add(i); } } int useitem = items.Count - 1; /* * Case 1: all tagged sectors are also selected sectors. In this case we can reuse * the original control, so one less additional control is needed * Case 2: multiple tagged sectors are also selected sectors. In this case we can * reuse the original control, so one less additional control is needed * Case 3: only one tagged sector is also the selected sector. In this case we * have to add exactly one additional control */ controls.Add(ctrl); if (items.Count == 1) { numsplits = 1; } else { numsplits = items.Count - 1; } if (items.Count == 1) { startat = 0; } // Start at 1 because we can keep the original 3D floor and just uncheck all but // one checkbox /* * for (int i = 0; i < numsplits; i++) * { * ThreeDFloorHelperControl split = new ThreeDFloorHelperControl(ctrl); * * for (int j = 1; j < split.checkedListBoxSectors.Items.Count; j++) * { * split.checkedListBoxSectors.SetItemChecked(j, false); * } * * split.checkedListBoxSectors.SetItemChecked(items[i], true); * * threeDFloorPanel.Controls.Add(split); * * threeDFloorPanel.ScrollControlIntoView(split); * } */ for (int i = 0; i < numsplits; i++) { var newctrl = new ThreeDFloorHelperControl(ctrl); controls.Add(newctrl); threeDFloorPanel.Controls.Add(newctrl); } for (int i = controls.Count - 1; i >= 0; i--) { for (int j = 0; j < items.Count; j++) { controls[i].checkedListBoxSectors.SetItemChecked(j, false); } if (useitem >= 0) { controls[i].checkedListBoxSectors.SetItemChecked(items[useitem], true); } useitem--; } /* * * if (items.Count == 1) * { * ctrl.checkedListBoxSectors.SetItemChecked(items[0], false); * } * else * { * // Uncheck the checkboxes from the original 3D floor * for (int i = 1; i < items.Count; i++) * { * ctrl.checkedListBoxSectors.SetItemChecked(items[i], false); * } * } */ }