Пример #1
0
        private void ApplyJitterTransform()
        {
            if (General.Editing.Mode == null)
            {
                return;
            }
            string      currentModeName = General.Editing.Mode.GetType().Name;
            DelayedForm form            = null;

            // Display one of colorPickers or tell the user why we can't do that
            if (currentModeName == "ThingsMode")
            {
                if (General.Map.Map.SelectedThingsCount == 0)
                {
                    General.Interface.DisplayStatus(StatusType.Warning, "Select some things first!");
                    return;
                }
                form = new JitterThingsForm(currentModeName);
            }
            else if (currentModeName == "SectorsMode")
            {
                if (General.Map.Map.SelectedSectorsCount == 0)
                {
                    General.Interface.DisplayStatus(StatusType.Warning, "Select some sectors first!");
                    return;
                }
                form = new JitterSectorsForm(currentModeName);
            }
            else if (currentModeName == "LinedefsMode")
            {
                if (General.Map.Map.SelectedLinedefsCount == 0)
                {
                    General.Interface.DisplayStatus(StatusType.Warning, "Select some linedefs first!");
                    return;
                }
                form = new JitterVerticesForm(currentModeName);
            }
            else if (currentModeName == "VerticesMode")
            {
                if (General.Map.Map.SelectedVerticessCount == 0)
                {
                    General.Interface.DisplayStatus(StatusType.Warning, "Select some vertices first!");
                    return;
                }
                form = new JitterVerticesForm(currentModeName);
            }
            else if (currentModeName == "BaseVisualMode")
            {
                // No visual things selected in visual mode?
                if (((VisualMode)General.Editing.Mode).GetSelectedVisualThings(true).Count == 0)
                {
                    // Check selected geometry
                    List <VisualGeometry> list = ((VisualMode)General.Editing.Mode).GetSelectedSurfaces();
                    if (list.Count > 0)
                    {
                        foreach (VisualGeometry vg in list)
                        {
                            if (vg.GeometryType == VisualGeometryType.CEILING ||
                                vg.GeometryType == VisualGeometryType.FLOOR)
                            {
                                form = new JitterSectorsForm(currentModeName);
                                break;
                            }
                        }

                        if (form == null)
                        {
                            form = new JitterVerticesForm(currentModeName);
                        }
                    }
                    else
                    {
                        General.Interface.DisplayStatus(StatusType.Warning, "Select some things, sectors or surfaces first!");
                        return;
                    }
                }
                else
                {
                    form = new JitterThingsForm(currentModeName);
                }
            }
            else             // Wrong mode
            {
                General.Interface.DisplayStatus(StatusType.Warning, "Switch to Sectors, Things, Vertices, Linedefs or Visual mode first!");
                return;
            }

            form.ShowDialog(General.Interface);
        }