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);
        }
Esempio n. 4
0
        // 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);
            }
        }
Esempio n. 11
0
        // 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--;
            }
        }
Esempio n. 14
0
        /// <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);
             *      }
             * }
             */
        }