Exemple #1
0
        private void PopulatePlayback(ControlBase parent)
        {
            var playbackzoom        = GwenHelper.CreateHeaderPanel(parent, "Playback Zoom");
            RadioButtonGroup pbzoom = new RadioButtonGroup(playbackzoom)
            {
                Dock = Dock.Left,
                ShouldDrawBackground = false,
            };

            pbzoom.AddOption("Default Zoom");
            pbzoom.AddOption("Current Zoom");
            pbzoom.AddOption("Specific Zoom");
            Spinner playbackspinner = new Spinner(pbzoom)
            {
                Dock = Dock.Bottom,
                Max  = 24,
                Min  = 1,
            };

            pbzoom.SelectionChanged += (o, e) =>
            {
                Settings.PlaybackZoomType = ((RadioButtonGroup)o).SelectedIndex;
                Settings.Save();
                playbackspinner.IsHidden = (((RadioButtonGroup)o).SelectedLabel != "Specific Zoom");
            };
            playbackspinner.ValueChanged += (o, e) =>
            {
                Settings.PlaybackZoomValue = (float)((Spinner)o).Value;
                Settings.Save();
            };
            pbzoom.SetSelection(Settings.PlaybackZoomType);
            playbackspinner.Value = Settings.PlaybackZoomValue;

            var playbackmode = GwenHelper.CreateHeaderPanel(parent, "Playback Color");

            GwenHelper.AddCheckbox(playbackmode, "Color Playback", Settings.ColorPlayback, (o, e) =>
            {
                Settings.ColorPlayback = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var preview = GwenHelper.AddCheckbox(playbackmode, "Preview Mode", Settings.PreviewMode, (o, e) =>
            {
                Settings.PreviewMode = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var recording = GwenHelper.AddCheckbox(playbackmode, "Recording Mode", Settings.Local.RecordingMode, (o, e) =>
            {
                Settings.Local.RecordingMode = ((Checkbox)o).IsChecked;
            });
            var framerate = GwenHelper.CreateHeaderPanel(parent, "Frame Control");
            var smooth    = GwenHelper.AddCheckbox(framerate, "Smooth Playback", Settings.SmoothPlayback, (o, e) =>
            {
                Settings.SmoothPlayback = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            ComboBox pbrate = GwenHelper.CreateLabeledCombobox(framerate, "Playback Rate:");

            for (var i = 0; i < Constants.MotionArray.Length; i++)
            {
                var f = (Constants.MotionArray[i] / (float)Constants.PhysicsRate);
                pbrate.AddItem(f + "x", f.ToString(CultureInfo.InvariantCulture), f);
            }
            pbrate.SelectByName(Settings.DefaultPlayback.ToString(CultureInfo.InvariantCulture));
            pbrate.ItemSelected += (o, e) =>
            {
                Settings.DefaultPlayback = (float)e.SelectedItem.UserData;
                Settings.Save();
            };
            var cbslowmo = GwenHelper.CreateLabeledCombobox(framerate, "Slowmo FPS:");
            var fpsarray = new[] { 1, 2, 5, 10, 20 };

            for (var i = 0; i < fpsarray.Length; i++)
            {
                cbslowmo.AddItem(fpsarray[i].ToString(), fpsarray[i].ToString(CultureInfo.InvariantCulture),
                                 fpsarray[i]);
            }
            cbslowmo.SelectByName(Settings.SlowmoSpeed.ToString(CultureInfo.InvariantCulture));
            cbslowmo.ItemSelected += (o, e) =>
            {
                Settings.SlowmoSpeed = (int)e.SelectedItem.UserData;
                Settings.Save();
            };
            smooth.Tooltip = "Interpolates frames from the base\nphysics rate of 40 frames/second\nup to 60 frames/second";
        }
        private void PopulateRiderSettings(ControlBase parent)
        {
            var scarfSettingPanel = GwenHelper.CreateHeaderPanel(parent, "Scarf Settings");
            var riderSettingPanel = GwenHelper.CreateHeaderPanel(parent, "Rider Settings");

            ComboBox scarfCombobox = GwenHelper.CreateLabeledCombobox(scarfSettingPanel, "Selected Scarf:");

            scarfCombobox.AddItem("Default", "*default*", "*default*");
            string[] scarfPaths = Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\LRA\\Scarves");
            for (int i = 0; i < scarfPaths.Length; i++)
            {
                string scarfNames = Path.GetFileName(scarfPaths[i]);
                scarfCombobox.AddItem(scarfNames, scarfNames, scarfNames);
            }

            scarfCombobox.ItemSelected += (o, e) =>
            {
                Settings.SelectedScarf = (String)e.SelectedItem.UserData;
                Debug.WriteLine("Selected Scarf: \"" + Settings.SelectedScarf + "\"");
                Settings.Save();
            };

            var scarfSegments = new Spinner(parent)
            {
                Min   = 1,
                Max   = int.MaxValue - 1,
                Value = Settings.ScarfSegments,
            };

            scarfSegments.ValueChanged += (o, e) =>
            {
                Settings.ScarfSegments = (int)((Spinner)o).Value;
                Settings.Save();
            };
            GwenHelper.CreateLabeledControl(scarfSettingPanel, "Scarf Segments (Needs Restart)", scarfSegments);

            var multiScarfAmount = new Spinner(parent)
            {
                Min   = 1,
                Max   = int.MaxValue - 1,
                Value = Settings.multiScarfAmount,
            };

            multiScarfAmount.ValueChanged += (o, e) =>
            {
                Settings.multiScarfAmount = (int)((Spinner)o).Value;
                Settings.Save();
            };
            GwenHelper.CreateLabeledControl(scarfSettingPanel, "Multi-Scarf Amount (Needs Restart)", multiScarfAmount);

            var multiScarfSegments = new Spinner(parent)
            {
                Min   = 1,
                Max   = int.MaxValue - 1,
                Value = Settings.multiScarfSegments,
            };

            multiScarfSegments.ValueChanged += (o, e) =>
            {
                Settings.multiScarfSegments = (int)((Spinner)o).Value;
                Settings.Save();
            };
            GwenHelper.CreateLabeledControl(scarfSettingPanel, "Multi-Scarf Segments (Needs Restart)", multiScarfSegments);

            var showid = GwenHelper.AddCheckbox(scarfSettingPanel, "Apply Custom Scarf to Rider png", Settings.customScarfOnPng, (o, e) =>
            {
                Settings.customScarfOnPng = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            ComboBox boshSkinCombobox = GwenHelper.CreateLabeledCombobox(riderSettingPanel, "Selected Rider:");

            boshSkinCombobox.AddItem("Default", "*default*", "*default*");


            string[] riderPaths = Directory.GetDirectories(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/LRA/Riders");
            for (int i = 0; i < riderPaths.Length; i++)
            {
                String riderNames = Path.GetFileName(riderPaths[i]);
                boshSkinCombobox.AddItem(riderNames, riderNames, riderNames);
            }
            boshSkinCombobox.ItemSelected += (o, e) =>
            {
                Settings.SelectedBoshSkin = (String)e.SelectedItem.UserData;;
                Debug.WriteLine("Selected rider Skin: \"" + Settings.SelectedBoshSkin + "\"");
                Settings.Save();
            };

            scarfCombobox.SelectByUserData(Settings.SelectedScarf);
            boshSkinCombobox.SelectByUserData(Settings.SelectedBoshSkin);
        }
        private void PopulateSong(ControlBase parent)
        {
            var currentpanel = GwenHelper.CreateHeaderPanel(parent, "Current Song");

            currentpanel.Dock = Dock.Fill;
            ListSongs(currentpanel);
            var opts        = GwenHelper.CreateHeaderPanel(parent, "Sync options");
            var syncenabled = GwenHelper.AddCheckbox(opts, "Sync Song to Track", _editor.Song.Enabled, (o, e) =>
            {
                var song     = _editor.Song;
                song.Enabled = ((Checkbox)o).IsChecked;
                _editor.Song = song;
            });
            Spinner offset = new Spinner(null)
            {
                Min   = -2000,
                Max   = 2000,
                Value = _editor.Song.Offset
            };

            offset.ValueChanged += (o, e) =>
            {
                var song = _editor.Song;
                song.Offset  = (float)offset.Value;
                _editor.Song = song;
            };
            CreateLabeledControl(opts, "Offset", offset);
            Button help = new Button(parent)
            {
                Dock = Dock.Bottom,
                Text = "Help",
            };

            help.Clicked += (o, e) =>
            {
                MessageBox.Show(_canvas,
                                "LRA can sync songs with tracks you make.\nSongs are imported from Documents/LRA/Songs.\n\nWe load files as .ogg, but support importing all common filetypes. LRA will mark files it needs to automatically convert with [convert]",
                                "Help", true);
            };
            this.IsHiddenChanged += (o, e) =>
            {
                if (!this.IsHidden)
                {
                    return;
                }
                var fn = Program.UserDirectory + "Songs" +
                         Path.DirectorySeparatorChar +
                         _editor.Song.Location;
                if (_editor.Song.Enabled && File.Exists(fn))
                {
                    if (!IsOgg(fn) &&
                        !linerider.IO.ffmpeg.FFMPEG.HasExecutable)
                    {
                        var song = _editor.Song;
                        song.Location = null;
                        _editor.Song  = song;
                        _canvas.ShowffmpegMissing();
                    }
                    else
                    {
                        _canvas.Loading = true;
                        Audio.AudioService.LoadFile(ref fn);

                        var song = _editor.Song;
                        song.Location = Path.GetFileName(fn);
                        _editor.Song  = song;

                        _canvas.Loading = false;
                    }
                }
            };
        }
        private void PopulateTools(ControlBase parent)
        {
            var bezier = GwenHelper.CreateHeaderPanel(parent, "Bezier Tool");

            var resolution = new Spinner(bezier)
            {
                Min           = 5,
                Max           = 100,
                Value         = Settings.Bezier.Resolution,
                IncrementSize = 1
            };

            resolution.ValueChanged += (o, e) =>
            {
                Settings.Bezier.Resolution = (int)((Spinner)o).Value;
                Settings.Save();
            };
            GwenHelper.CreateLabeledControl(bezier, "Resolution (Lines per 100 pixels)", resolution);

            var nodeSize = new Spinner(bezier)
            {
                Min           = 5,
                Max           = 100,
                Value         = Settings.Bezier.NodeSize,
                IncrementSize = 1
            };

            nodeSize.ValueChanged += (o, e) =>
            {
                Settings.Bezier.NodeSize = (int)((Spinner)o).Value;
                Settings.Save();
            };
            GwenHelper.CreateLabeledControl(bezier, "Size of the bezier curve nodes", nodeSize);

            var bezierModeSelector = new RadioButtonGroup(bezier)
            {
                Dock = Dock.Top,
                ShouldDrawBackground = false
            };
            var directType = bezierModeSelector.AddOption("Direct Visualization Mode");
            var traceType  = bezierModeSelector.AddOption("Trace Visualization Mode");

            switch ((Settings.BezierMode)Settings.Bezier.Mode)
            {
            case Settings.BezierMode.Direct:
                directType.Select();
                break;

            case Settings.BezierMode.Trace:
                traceType.Select();
                break;
            }
            directType.CheckChanged += (o, e) =>
            {
                Settings.Bezier.Mode = (int)Settings.BezierMode.Direct;
                Settings.Save();
            };
            traceType.CheckChanged += (o, e) =>
            {
                Settings.Bezier.Mode = (int)Settings.BezierMode.Trace;
                Settings.Save();
            };

            var select = GwenHelper.CreateHeaderPanel(parent, "Select Tool -- Line Info");
            var length = GwenHelper.AddCheckbox(select, "Show Length", Settings.Editor.ShowLineLength, (o, e) =>
            {
                Settings.Editor.ShowLineLength = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var angle = GwenHelper.AddCheckbox(select, "Show Angle", Settings.Editor.ShowLineAngle, (o, e) =>
            {
                Settings.Editor.ShowLineAngle = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var showid = GwenHelper.AddCheckbox(select, "Show ID", Settings.Editor.ShowLineID, (o, e) =>
            {
                Settings.Editor.ShowLineID = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            Panel panelSnap = GwenHelper.CreateHeaderPanel(parent, "Snapping");
            var   linesnap  = GwenHelper.AddCheckbox(panelSnap, "Snap New Lines", Settings.Editor.SnapNewLines, (o, e) =>
            {
                Settings.Editor.SnapNewLines = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var movelinesnap = GwenHelper.AddCheckbox(panelSnap, "Snap Line Movement", Settings.Editor.SnapMoveLine, (o, e) =>
            {
                Settings.Editor.SnapMoveLine = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var gridsnap = GwenHelper.AddCheckbox(panelSnap, "Snap to displayed grids", Settings.Editor.SnapToGrid, (o, e) =>
            {
                Settings.Editor.SnapToGrid = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var forcesnap = GwenHelper.AddCheckbox(panelSnap, "Force X/Y snap", Settings.Editor.ForceXySnap, (o, e) =>
            {
                Settings.Editor.ForceXySnap = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var snapAngle = new Spinner(panelSnap)
            {
                Min           = 0,
                Max           = 180,
                Value         = Settings.Editor.XySnapDegrees,
                IncrementSize = 1
            };

            snapAngle.ValueChanged += (o, e) =>
            {
                Settings.Editor.XySnapDegrees = (float)Math.Round((float)((Spinner)o).Value, 2, MidpointRounding.AwayFromZero);
                ((Spinner)o).Value            = Settings.Editor.XySnapDegrees; // Re-display the rounded value
                Settings.Save();
            };
            GwenHelper.CreateLabeledControl(panelSnap, "X/Y snap degrees", snapAngle);
            forcesnap.Tooltip    = "Forces all lines drawn to\nsnap to multiples of a chosen angle";
            movelinesnap.Tooltip = "Snap to lines when using the\nselect tool to move a single line";
        }
        private void PopulateOther(ControlBase parent)
        {
            var updates = GwenHelper.CreateHeaderPanel(parent, "Updates");

            var showid = GwenHelper.AddCheckbox(updates, "Check For Updates", Settings.CheckForUpdates, (o, e) =>
            {
                Settings.CheckForUpdates = ((Checkbox)o).IsChecked;
                Settings.Save();
            });

            var showChangelog = GwenHelper.AddCheckbox(updates, "Show LRTran Changelog", Settings.showChangelog, (o, e) =>
            {
                Settings.showChangelog = ((Checkbox)o).IsChecked;
                Settings.Save();
            });

            var mainWindowSettings = GwenHelper.CreateHeaderPanel(parent, "Window Launch Size");
            var mainWindowWidth    = new Spinner(mainWindowSettings)
            {
                Min   = 1,
                Max   = int.MaxValue - 1,
                Value = Settings.mainWindowWidth,
            };

            mainWindowWidth.ValueChanged += (o, e) =>
            {
                Settings.mainWindowWidth = (int)((Spinner)o).Value;
                Settings.Save();
            };
            GwenHelper.CreateLabeledControl(mainWindowSettings, "Main Window Width (Current: " + (Program.GetWindowWidth()) + ")", mainWindowWidth);
            var mainWindowHeight = new Spinner(mainWindowSettings)
            {
                Min   = 1,
                Max   = int.MaxValue - 1,
                Value = Settings.mainWindowHeight,
            };

            mainWindowHeight.ValueChanged += (o, e) =>
            {
                Settings.mainWindowHeight = (int)((Spinner)o).Value;
                Settings.Save();
            };
            GwenHelper.CreateLabeledControl(mainWindowSettings, "Main Window Height (Current: " + (Program.GetWindowHeight()) + ")", mainWindowHeight);



            var saveSettings    = GwenHelper.CreateHeaderPanel(parent, "Saves");
            var autosaveMinutes = new Spinner(saveSettings)
            {
                Min   = 1,
                Max   = int.MaxValue - 1,
                Value = Settings.autosaveMinutes,
            };

            autosaveMinutes.ValueChanged += (o, e) =>
            {
                Settings.autosaveMinutes = (int)((Spinner)o).Value;
                Settings.Save();
            };
            GwenHelper.CreateLabeledControl(saveSettings, "Minutes between autosaves", autosaveMinutes);

            var autosaveChanges = new Spinner(saveSettings)
            {
                Min   = 1,
                Max   = int.MaxValue - 1,
                Value = Settings.autosaveChanges,
            };

            autosaveChanges.ValueChanged += (o, e) =>
            {
                Settings.autosaveChanges = (int)((Spinner)o).Value;
                Settings.Save();
            };
            GwenHelper.CreateLabeledControl(saveSettings, "Min changes to start autosaving", autosaveChanges);

            ComboBox defaultSaveType = GwenHelper.CreateLabeledCombobox(saveSettings, "Default Save As Format:");

            defaultSaveType.AddItem(".trk", "", ".trk");
            defaultSaveType.AddItem(".json", "", ".json");
            defaultSaveType.AddItem(".sol", "", ".sol");
            defaultSaveType.ItemSelected += (o, e) =>
            {
                Settings.DefaultSaveFormat = (String)e.SelectedItem.UserData;
                Settings.Save();
            };

            ComboBox defaultQuicksaveType = GwenHelper.CreateLabeledCombobox(saveSettings, "Default Quicksave Format:");

            defaultQuicksaveType.AddItem(".trk", "", ".trk");
            defaultQuicksaveType.AddItem(".json", "", ".json");
            defaultQuicksaveType.AddItem(".sol", "", ".sol");
            defaultQuicksaveType.ItemSelected += (o, e) =>
            {
                Settings.DefaultQuicksaveFormat = (String)e.SelectedItem.UserData;
                Settings.Save();
            };

            ComboBox defaultAutosaveType = GwenHelper.CreateLabeledCombobox(saveSettings, "Default Autosave Format:");

            defaultAutosaveType.AddItem(".trk", "", ".trk");
            defaultAutosaveType.AddItem(".json", "", ".json");
            defaultAutosaveType.AddItem(".sol", "", ".sol");
            defaultAutosaveType.SelectByUserData(Settings.DefaultAutosaveFormat);
            defaultAutosaveType.ItemSelected += (o, e) =>
            {
                Settings.DefaultAutosaveFormat = (String)e.SelectedItem.UserData;
                Settings.Save();
            };

            ComboBox defaultCrashBackupType = GwenHelper.CreateLabeledCombobox(saveSettings, "Default Crash Backup Format:");

            defaultCrashBackupType.AddItem(".trk", "", ".trk");
            defaultCrashBackupType.AddItem(".json", "", ".json");
            defaultCrashBackupType.AddItem(".sol", "", ".sol");
            defaultCrashBackupType.SelectByUserData(Settings.DefaultCrashBackupFormat);
            defaultCrashBackupType.ItemSelected += (o, e) =>
            {
                Settings.DefaultCrashBackupFormat = (String)e.SelectedItem.UserData;
                Settings.Save();
            };

            defaultSaveType.SelectByUserData(Settings.DefaultSaveFormat);
            defaultQuicksaveType.SelectByUserData(Settings.DefaultQuicksaveFormat);
            defaultAutosaveType.SelectByUserData(Settings.DefaultAutosaveFormat);
            defaultAutosaveType.SelectByUserData(Settings.DefaultCrashBackupFormat);
        }
        private void PopulateLines(ControlBase parent)
        {
            Panel lineColors = GwenHelper.CreateHeaderPanel(parent, "Line Color Customization");
            var   defaultRed = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.DefaultLine.R
            };

            defaultRed.ValueChanged += (o, e) =>
            {
                Settings.Lines.DefaultLine = Color.FromArgb((int)((Spinner)o).Value, Settings.Lines.DefaultLine.G, Settings.Lines.DefaultLine.B);
                Settings.Save();
            };

            var defaultGreen = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.DefaultLine.G
            };

            defaultGreen.ValueChanged += (o, e) =>
            {
                Settings.Lines.DefaultLine = Color.FromArgb(Settings.Lines.DefaultLine.R, (int)((Spinner)o).Value, Settings.Lines.DefaultLine.B);
                Settings.Save();
            };

            var defaultBlue = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.DefaultLine.B
            };

            defaultBlue.ValueChanged += (o, e) =>
            {
                Settings.Lines.DefaultLine = Color.FromArgb(Settings.Lines.DefaultLine.R, Settings.Lines.DefaultLine.G, (int)((Spinner)o).Value);
                Settings.Save();
            };

            GwenHelper.CreateLabeledControl(parent, "Default line color (R,G,B)", new ControlBase[3] {
                defaultRed, defaultGreen, defaultBlue
            });

            var nightRed = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.DefaultNightLine.R
            };

            nightRed.ValueChanged += (o, e) =>
            {
                Settings.Lines.DefaultNightLine = Color.FromArgb((int)((Spinner)o).Value, Settings.Lines.DefaultNightLine.G, Settings.Lines.DefaultNightLine.B);
                Settings.Save();
            };

            var nightGreen = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.DefaultNightLine.G
            };

            nightGreen.ValueChanged += (o, e) =>
            {
                Settings.Lines.DefaultNightLine = Color.FromArgb(Settings.Lines.DefaultNightLine.R, (int)((Spinner)o).Value, Settings.Lines.DefaultNightLine.B);
                Settings.Save();
            };

            var nightBlue = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.DefaultNightLine.B
            };

            nightBlue.ValueChanged += (o, e) =>
            {
                Settings.Lines.DefaultNightLine = Color.FromArgb(Settings.Lines.DefaultNightLine.R, Settings.Lines.DefaultNightLine.G, (int)((Spinner)o).Value);
                Settings.Save();
            };

            GwenHelper.CreateLabeledControl(parent, "Night line color (R,G,B)", new ControlBase[3] {
                nightRed, nightGreen, nightBlue
            });

            var accelRed = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.AccelerationLine.R
            };

            accelRed.ValueChanged += (o, e) =>
            {
                Settings.Lines.AccelerationLine = Color.FromArgb((int)((Spinner)o).Value, Settings.Lines.AccelerationLine.G, Settings.Lines.AccelerationLine.B);
                SaveLines();
            };

            var accelGreen = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.AccelerationLine.G
            };

            accelGreen.ValueChanged += (o, e) =>
            {
                Settings.Lines.AccelerationLine = Color.FromArgb(Settings.Lines.AccelerationLine.R, (int)((Spinner)o).Value, Settings.Lines.AccelerationLine.B);
                SaveLines();
            };

            var accelBlue = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.AccelerationLine.B
            };

            accelBlue.ValueChanged += (o, e) =>
            {
                Settings.Lines.AccelerationLine = Color.FromArgb(Settings.Lines.AccelerationLine.R, Settings.Lines.AccelerationLine.G, (int)((Spinner)o).Value);
                SaveLines();
            };

            GwenHelper.CreateLabeledControl(parent, "Acceleration line color (R,G,B)", new ControlBase[3] {
                accelRed, accelGreen, accelBlue
            });

            var sceneryRed = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.SceneryLine.R
            };

            sceneryRed.ValueChanged += (o, e) =>
            {
                Settings.Lines.SceneryLine = Color.FromArgb((int)((Spinner)o).Value, Settings.Lines.SceneryLine.G, Settings.Lines.SceneryLine.B);
                Settings.Save();
            };

            var sceneryGreen = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.SceneryLine.G
            };

            sceneryGreen.ValueChanged += (o, e) =>
            {
                Settings.Lines.SceneryLine = Color.FromArgb(Settings.Lines.SceneryLine.R, (int)((Spinner)o).Value, Settings.Lines.SceneryLine.B);
                Settings.Save();
            };

            var sceneryBlue = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.SceneryLine.B
            };

            sceneryBlue.ValueChanged += (o, e) =>
            {
                Settings.Lines.SceneryLine = Color.FromArgb(Settings.Lines.SceneryLine.R, Settings.Lines.SceneryLine.G, (int)((Spinner)o).Value);
                Settings.Save();
            };

            GwenHelper.CreateLabeledControl(parent, "Scenery line color (R,G,B)", new ControlBase[3] {
                sceneryRed, sceneryGreen, sceneryBlue
            });

            var standardRed = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.StandardLine.R
            };

            standardRed.ValueChanged += (o, e) =>
            {
                Settings.Lines.StandardLine = Color.FromArgb((int)((Spinner)o).Value, Settings.Lines.StandardLine.G, Settings.Lines.StandardLine.B);
                SaveLines();
            };

            var standardGreen = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.StandardLine.G
            };

            standardGreen.ValueChanged += (o, e) =>
            {
                Settings.Lines.StandardLine = Color.FromArgb(Settings.Lines.StandardLine.R, (int)((Spinner)o).Value, Settings.Lines.StandardLine.B);
                SaveLines();
            };

            var standardBlue = new Spinner(lineColors)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.Lines.StandardLine.B
            };

            standardBlue.ValueChanged += (o, e) =>
            {
                Settings.Lines.StandardLine = Color.FromArgb(Settings.Lines.StandardLine.R, Settings.Lines.StandardLine.G, (int)((Spinner)o).Value);
                SaveLines();
            };

            GwenHelper.CreateLabeledControl(parent, "Standard line color (R,G,B)", new ControlBase[3] {
                standardRed, standardGreen, standardBlue
            });
        }
        private void PopulateEditor(ControlBase parent)
        {
            Panel advancedtools = GwenHelper.CreateHeaderPanel(parent, "Advanced Visualization");

            var contact = GwenHelper.AddCheckbox(advancedtools, "Contact Points", Settings.Editor.DrawContactPoints, (o, e) =>
            {
                Settings.Editor.DrawContactPoints = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var momentum = GwenHelper.AddCheckbox(advancedtools, "Momentum Vectors", Settings.Editor.MomentumVectors, (o, e) =>
            {
                Settings.Editor.MomentumVectors = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var hitbox = GwenHelper.AddCheckbox(advancedtools, "Line Hitbox", Settings.Editor.RenderGravityWells, (o, e) =>
            {
                Settings.Editor.RenderGravityWells = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var hittest = GwenHelper.AddCheckbox(advancedtools, "Hit Test", Settings.Editor.HitTest, (o, e) =>
            {
                Settings.Editor.HitTest = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var onion = GwenHelper.AddCheckbox(advancedtools, "Onion Skinning", Settings.OnionSkinning, (o, e) =>
            {
                Settings.OnionSkinning = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var pastOnionSkins = new Spinner(advancedtools)
            {
                Min   = 0,
                Max   = 1000,
                Value = Settings.PastOnionSkins,
            };

            pastOnionSkins.ValueChanged += (o, e) =>
            {
                Settings.PastOnionSkins = (int)((Spinner)o).Value;
                Settings.Save();
            };
            var futureOnionSkins = new Spinner(advancedtools)
            {
                Min   = 0,
                Max   = 1000,
                Value = Settings.FutureOnionSkins,
            };

            futureOnionSkins.ValueChanged += (o, e) =>
            {
                Settings.FutureOnionSkins = (int)((Spinner)o).Value;
                Settings.Save();
            };
            GwenHelper.CreateLabeledControl(advancedtools, "#Onion Skins (Before, After)", new ControlBase[2] {
                pastOnionSkins, futureOnionSkins
            });
            var drawgrid = GwenHelper.AddCheckbox(advancedtools, "Simulation Grid", Settings.DrawCollisionGrid, (o, e) =>
            {
                Settings.DrawCollisionGrid = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var drawagws = GwenHelper.AddCheckbox(advancedtools, "Line Extensions (AGWs)", Settings.DrawAGWs, (o, e) =>
            {
                Settings.DrawAGWs = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var drawfloatgrid = GwenHelper.AddCheckbox(advancedtools, "Floating-point (angled kramual) grid", Settings.DrawFloatGrid, (o, e) =>
            {
                Settings.DrawFloatGrid = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var drawcam = GwenHelper.AddCheckbox(advancedtools, "Camera", Settings.DrawCamera, (o, e) =>
            {
                Settings.DrawCamera = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            Panel pblifelock = GwenHelper.CreateHeaderPanel(parent, "Lifelock Conditions");

            GwenHelper.AddCheckbox(pblifelock, "Next frame constraints", Settings.Editor.LifeLockNoOrange, (o, e) =>
            {
                Settings.Editor.LifeLockNoOrange = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            GwenHelper.AddCheckbox(pblifelock, "No Fakie Death", Settings.Editor.LifeLockNoFakie, (o, e) =>
            {
                Settings.Editor.LifeLockNoFakie = ((Checkbox)o).IsChecked;
                Settings.Save();
            });

            var overlay = GwenHelper.CreateHeaderPanel(parent, "Frame Overlay");

            PopulateOverlay(overlay);

            onion.Tooltip    = "Visualize the rider before/after\nthe current frame.";
            momentum.Tooltip = "Visualize the direction of\nmomentum for each contact point";
            contact.Tooltip  = "Visualize the parts of the rider\nthat interact with lines.";
            hitbox.Tooltip   = "Visualizes the hitbox of lines\nUsed for advanced editing";
            hittest.Tooltip  = "Lines that have been hit by\nthe rider will glow.";
        }
Exemple #8
0
        private void PopulateRider(ControlBase parent)
        {
            var scarfSettingPanel = GwenHelper.CreateHeaderPanel(parent, "Scarf Settings");
            var riderSettingPanel = GwenHelper.CreateHeaderPanel(parent, "Rider Settings");

            ComboBox scarfCombobox = GwenHelper.CreateLabeledCombobox(scarfSettingPanel, "Selected Scarf:");

            scarfCombobox.AddItem("LRLuna Default", "*default*", "*default*");
            scarfCombobox.Width = 215;
            string[] scarfPaths = Directory.GetFiles(Program.UserDirectory + "\\Scarves");
            for (int i = 0; i < scarfPaths.Length; i++)
            {
                string scarfNames = Path.GetFileName(scarfPaths[i]);
                if ((scarfNames.EndsWith(".txt", true, CultureInfo.CurrentCulture)) || (scarfNames.EndsWith(".scarf", true, CultureInfo.CurrentCulture)))
                {
                    scarfCombobox.AddItem(scarfNames, scarfNames, scarfNames);
                }
            }
            scarfCombobox.SelectByUserData(Settings.SelectedScarf);
            scarfCombobox.ItemSelected += (o, e) =>
            {
                Settings.SelectedScarf = (String)e.SelectedItem.UserData;
                Settings.Save();
                _editor.UpdateScarf(Settings.SelectedScarf);
            };

            var scarfSegments = new Spinner(parent)
            {
                Min   = 1,
                Max   = int.MaxValue - 1,
                Value = Settings.ScarfSegments,
            };
            var scarfSegmentsLabel = GwenHelper.CreateLabeledControl(scarfSettingPanel, "Scarf Segments (Needs Restart)", scarfSegments);

            scarfSegments.ValueChanged += (o, e) =>
            {
                Settings.ScarfSegments = (int)((Spinner)o).Value;
                Settings.Save();
            };

            var multiScarfAmount = new Spinner(parent)
            {
                Min   = 1,
                Max   = int.MaxValue - 1,
                Value = Settings.multiScarfAmount,
            };

            multiScarfAmount.ValueChanged += (o, e) =>
            {
                Settings.multiScarfAmount = (int)((Spinner)o).Value;
                Settings.Save();
                _editor.InvalidateRenderRider();
            };
            GwenHelper.CreateLabeledControl(scarfSettingPanel, "Multi-Scarf Amount (Needs Restart)", multiScarfAmount);

            var multiScarfSegments = new Spinner(parent)
            {
                Min   = 1,
                Max   = int.MaxValue - 1,
                Value = Settings.multiScarfSegments,
            };

            multiScarfSegments.ValueChanged += (o, e) =>
            {
                Settings.multiScarfSegments = (int)((Spinner)o).Value;
                Settings.Save();
                _editor.InvalidateRenderRider();
            };
            GwenHelper.CreateLabeledControl(scarfSettingPanel, "Multi-Scarf Segments (Needs Restart)", multiScarfSegments);

            var showid = GwenHelper.AddCheckbox(scarfSettingPanel, "Apply Custom Scarf to Rider Image", Settings.CustomScarfOnPng, (o, e) =>
            {
                Settings.CustomScarfOnPng = ((Checkbox)o).IsChecked;
                Settings.Save();
                Models.LoadModels(Settings.SelectedBoshSkin);
            });

            ComboBox boshSkinCombobox = GwenHelper.CreateLabeledCombobox(riderSettingPanel, "Selected Rider:");

            boshSkinCombobox.AddItem("LRLuna Default", "*default*", "*default*");
            boshSkinCombobox.Width = 217;
            string[] riderPaths = Directory.GetDirectories(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/LRA/Riders");
            for (int i = 0; i < riderPaths.Length; i++)
            {
                String riderNames = Path.GetFileName(riderPaths[i]);
                boshSkinCombobox.AddItem(riderNames, riderNames, riderNames);
            }
            boshSkinCombobox.SelectByUserData(Settings.SelectedBoshSkin);
            boshSkinCombobox.ItemSelected += (o, e) =>
            {
                Settings.SelectedBoshSkin = (String)e.SelectedItem.UserData;
                Settings.Save();
                Models.LoadModels(Settings.SelectedBoshSkin);
            };
        }
        private void PopulateDiscordSettings(ControlBase parent)
        {
            var discordHeader = GwenHelper.CreateHeaderPanel(parent, "Discord Activity Settings");

            var showid = GwenHelper.AddCheckbox(discordHeader, "Enable Discord Activity (Needs Restart to Disable)", Settings.discordActivityEnabled, (o, e) =>
            {
                Settings.discordActivityEnabled = ((Checkbox)o).IsChecked;
                Settings.Save();
            });

            ComboBox activity1 = GwenHelper.CreateLabeledCombobox(discordHeader, "Line 1 Text 1:");
            ComboBox activity2 = GwenHelper.CreateLabeledCombobox(discordHeader, "Line 1 Text 2:");
            ComboBox activity3 = GwenHelper.CreateLabeledCombobox(discordHeader, "Line 2 Text 1:");
            ComboBox activity4 = GwenHelper.CreateLabeledCombobox(discordHeader, "Line 2 Text 2:");

            ComboBox[] boxArr = { activity1, activity2, activity3, activity4 };
            for (int i = 0; i < 4; i++)
            {
                boxArr[i].AddItem("None", "none", "none");
                boxArr[i].AddItem("Selected Tool", "toolText", "toolText");
                boxArr[i].AddItem("Number of Unsaved Changes", "unsavedChangesText", "unsavedChangesText");
                boxArr[i].AddItem("Track Name", "trackText", "trackText");
                boxArr[i].AddItem("Amount of Lines", "lineText", "lineText");
                boxArr[i].AddItem("Version", "versionText", "versionText");
            }
            activity1.SelectByUserData(Settings.discordActivity1);
            activity2.SelectByUserData(Settings.discordActivity2);
            activity3.SelectByUserData(Settings.discordActivity3);
            activity4.SelectByUserData(Settings.discordActivity4);

            activity1.ItemSelected += (o, e) =>
            {
                Settings.discordActivity1 = (String)e.SelectedItem.UserData;;
                Settings.Save();
            };
            activity2.ItemSelected += (o, e) =>
            {
                Settings.discordActivity2 = (String)e.SelectedItem.UserData;;
                Settings.Save();
            };
            activity3.ItemSelected += (o, e) =>
            {
                Settings.discordActivity3 = (String)e.SelectedItem.UserData;;
                Settings.Save();
            };
            activity4.ItemSelected += (o, e) =>
            {
                Settings.discordActivity4 = (String)e.SelectedItem.UserData;;
                Settings.Save();
            };

            ComboBox largeImageKey = GwenHelper.CreateLabeledCombobox(discordHeader, "Image:");

            largeImageKey.AddItem("LRTran App Icon", "lrl", "lrl");
            largeImageKey.AddItem(":boshbless:", "bosh_pray", "bosh_pray");
            largeImageKey.SelectByUserData(Settings.largeImageKey);
            largeImageKey.ItemSelected += (o, e) =>
            {
                Settings.largeImageKey = (String)e.SelectedItem.UserData;;
                Settings.Save();
            };
        }
Exemple #10
0
        private void PopulateCamera(ControlBase parent)
        {
            var camtype               = GwenHelper.CreateHeaderPanel(parent, "Camera Type");
            var camtracking           = GwenHelper.CreateHeaderPanel(parent, "Camera Tracking");
            var camprops              = GwenHelper.CreateHeaderPanel(parent, "Camera Properties");
            RadioButtonGroup rbcamera = new RadioButtonGroup(camtype)
            {
                Dock = Dock.Top,
                ShouldDrawBackground = false,
            };
            var soft       = rbcamera.AddOption("Soft Camera");
            var predictive = rbcamera.AddOption("Predictive Camera");
            var legacy     = rbcamera.AddOption("Legacy Camera");

            RadioButtonGroup xycamera = new RadioButtonGroup(camtracking)
            {
                Dock = Dock.Top,
                ShouldDrawBackground = false,
            };
            var horizontal         = xycamera.AddOption("Horizontal Tracking");
            var vertical           = xycamera.AddOption("Vertical Tracking");
            var horizontalvertical = xycamera.AddOption("Normal Tracking");

            var round = GwenHelper.AddCheckbox(camprops, "Round Legacy Camera", Settings.RoundLegacyCamera, (o, e) =>
            {
                Settings.RoundLegacyCamera = ((Checkbox)o).IsChecked;
                Settings.Save();
                _editor.InitCamera();
            });
            var offsledsled = GwenHelper.AddCheckbox(camprops, "Offsled Sled Camera", Settings.OffsledSledCam, (o, e) =>
            {
                Settings.OffsledSledCam = ((Checkbox)o).IsChecked;
                Settings.Save();
                _editor.InitCamera();
            });
            var offsledvar = GwenHelper.AddCheckbox(camprops, "Variable Contact Point Camera", Settings.OffsledVar, (o, e) =>
            {
                Settings.OffsledVar = ((Checkbox)o).IsChecked;
                Settings.Save();
                _editor.InitCamera();
            });
            var fixedcam = GwenHelper.AddCheckbox(camprops, "Fixed Camera", Settings.FixedCam, (o, e) =>
            {
                Settings.FixedCam = ((Checkbox)o).IsChecked;
                Settings.Save();
                _editor.InitCamera();
            });
            var     variables = GwenHelper.CreateHeaderPanel(parent, "Contact Point Settings");
            Spinner pointvar  = new Spinner(variables)
            {
                Dock  = Dock.Bottom,
                Max   = 29,
                Min   = 0,
                Value = Settings.PointVar,
            };

            pointvar.ValueChanged += (o, e) =>
            {
                Settings.PointVar = (int)pointvar.Value;
                Settings.Save();
            };
            var fixedpos = GwenHelper.CreateHeaderPanel(parent, "Fixed Camera X and Y Position");
            var xfixed   = new Spinner(null)
            {
                Dock  = Dock.Bottom,
                Max   = 2147483648,
                Min   = -2147483648,
                Value = Settings.XFixed
            };

            xfixed.ValueChanged += (o, e) =>
            {
                Settings.XFixed = (int)xfixed.Value;
                Settings.Save();
                _editor.InitCamera();
            };
            var yfixed = new Spinner(null)
            {
                Dock  = Dock.Bottom,
                Max   = 2147483648,
                Min   = -2147483648,
                Value = Settings.YFixed
            };

            yfixed.ValueChanged += (o, e) =>
            {
                Settings.YFixed = (int)yfixed.Value;
                Settings.Save();
                _editor.InitCamera();
            };
            GwenHelper.CreateLabeledControl(fixedpos, "X Location", xfixed);
            GwenHelper.CreateLabeledControl(fixedpos, "Y Location", yfixed);
            if (Settings.SmoothCamera)
            {
                if (Settings.PredictiveCamera)
                {
                    predictive.Select();
                }
                else
                {
                    soft.Select();
                }
            }
            else
            {
                legacy.Select();
            }

            if (Settings.HorizontalTracking)
            {
                horizontal.Select();
            }
            else if (Settings.VerticalTracking)
            {
                vertical.Select();
            }
            else
            {
                horizontalvertical.Select();
            }

            horizontal.Checked += (o, e) =>
            {
                Settings.HorizontalTracking = true;
                Settings.VerticalTracking   = false;
                Settings.Save();
                _editor.InitCamera();
            };
            vertical.Checked += (o, e) =>
            {
                Settings.HorizontalTracking = false;
                Settings.VerticalTracking   = true;
                Settings.Save();
                _editor.InitCamera();
            };
            horizontalvertical.Checked += (o, e) =>
            {
                Settings.HorizontalTracking = false;
                Settings.VerticalTracking   = false;
                Settings.Save();
                _editor.InitCamera();
            };

            soft.Checked += (o, e) =>
            {
                Settings.SmoothCamera     = true;
                Settings.PredictiveCamera = false;
                Settings.Save();
                round.IsDisabled = Settings.SmoothCamera;
                _editor.InitCamera();
            };
            predictive.Checked += (o, e) =>
            {
                Settings.SmoothCamera     = true;
                Settings.PredictiveCamera = true;
                Settings.Save();
                round.IsDisabled = Settings.SmoothCamera;
                _editor.InitCamera();
            };
            legacy.Checked += (o, e) =>
            {
                Settings.SmoothCamera     = false;
                Settings.PredictiveCamera = false;
                Settings.Save();
                round.IsDisabled = Settings.SmoothCamera;
                _editor.InitCamera();
            };
            predictive.Tooltip = "This is the camera that was added in 1.03\nIt moves relative to the future of the track";
        }
Exemple #11
0
        private void PopulateModes(ControlBase parent)
        {
            var background = GwenHelper.CreateHeaderPanel(parent, "Background Color");

            GwenHelper.AddCheckbox(background, "Night Mode", Settings.NightMode, (o, e) =>
            {
                Settings.NightMode = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var whitebg = GwenHelper.AddCheckbox(background, "Pure White Background", Settings.WhiteBG, (o, e) =>
            {
                Settings.WhiteBG = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var coloredbg = GwenHelper.AddCheckbox(background, "Colored Background", Settings.ColoredBG, (o, e) =>
            {
                Settings.ColoredBG = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var panelgeneral = GwenHelper.CreateHeaderPanel(parent, "General");
            var superzoom    = GwenHelper.AddCheckbox(panelgeneral, "Superzoom", Settings.SuperZoom, (o, e) =>
            {
                Settings.SuperZoom = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            ComboBox scroll = GwenHelper.CreateLabeledCombobox(panelgeneral, "Scroll Sensitivity:");

            scroll.Margin = new Margin(0, 0, 0, 0);
            scroll.Dock   = Dock.Bottom;
            scroll.AddItem("0.25x").Name = "0.25";
            scroll.AddItem("0.5x").Name  = "0.5";
            scroll.AddItem("0.75x").Name = "0.75";
            scroll.AddItem("1x").Name    = "1";
            scroll.AddItem("2x").Name    = "2";
            scroll.AddItem("3x").Name    = "3";
            scroll.SelectByName("1");//default if user setting fails.
            scroll.SelectByName(Settings.ScrollSensitivity.ToString(Program.Culture));
            scroll.ItemSelected += (o, e) =>
            {
                if (e.SelectedItem != null)
                {
                    Settings.ScrollSensitivity = float.Parse(e.SelectedItem.Name, Program.Culture);
                    Settings.Save();
                }
            };
            superzoom.Tooltip = "Allows the user to zoom in\nnearly 10x more than usual.";

            var colbg = GwenHelper.CreateHeaderPanel(parent, "Colored Background RGB");
            var redS  = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.RedColored,
            };

            redS.ValueChanged += (o, e) =>
            {
                Settings.RedColored = (int)redS.Value;
                Constants.Red       = (int)redS.Value;
                Settings.Save();
                Constants.ColorColored = new Color4((float)(Constants.Red / 255), (float)(Constants.Green / 255), (float)(Constants.Blue / 255), 255);
            };
            GwenHelper.CreateLabeledControl(colbg, "Red", redS);
            var greenS = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.GreenColored,
            };

            greenS.ValueChanged += (o, e) =>
            {
                Settings.GreenColored = (int)greenS.Value;
                Constants.Green       = (int)greenS.Value;
                Settings.Save();
                Constants.ColorColored = new Color4((float)(Constants.Red / 255), (float)(Constants.Green / 255), (float)(Constants.Blue / 255), 255);
            };
            GwenHelper.CreateLabeledControl(colbg, "Green", greenS);
            var blueS = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.BlueColored,
            };

            blueS.ValueChanged += (o, e) =>
            {
                Settings.BlueColored = (int)blueS.Value;
                Constants.Blue       = (int)blueS.Value;
                Settings.Save();
                Constants.ColorColored = new Color4((float)(Constants.Red / 255), (float)(Constants.Green / 255), (float)(Constants.Blue / 255), 255);
            };
            GwenHelper.CreateLabeledControl(colbg, "Blue", blueS);
        }
Exemple #12
0
        private void PopulateLines(ControlBase parent)
        {
            var lineoptions  = GwenHelper.CreateHeaderPanel(parent, "Line options");
            var coloroptions = GwenHelper.CreateHeaderPanel(parent, "Blue Line Color");
            var redS         = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.LineColorRed,
            };

            redS.ValueChanged += (o, e) =>
            {
                Settings.LineColorRed = (int)redS.Value;
                Constants.LineRed     = (int)redS.Value;
                Settings.Save();
                Constants.ColorDefaultLine = Color.FromArgb(Constants.LineRed, Constants.LineGreen, Constants.LineBlue);
            };
            GwenHelper.CreateLabeledControl(coloroptions, "Red", redS);
            var greenS = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.LineColorGreen,
            };

            greenS.ValueChanged += (o, e) =>
            {
                Settings.LineColorGreen = (int)greenS.Value;
                Constants.LineGreen     = (int)greenS.Value;
                Settings.Save();
                Constants.ColorDefaultLine = Color.FromArgb(Constants.LineRed, Constants.LineGreen, Constants.LineBlue);
            };
            GwenHelper.CreateLabeledControl(coloroptions, "Green", greenS);
            var blueS = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.LineColorBlue,
            };

            blueS.ValueChanged += (o, e) =>
            {
                Settings.LineColorBlue = (int)blueS.Value;
                Constants.LineBlue     = (int)blueS.Value;
                Settings.Save();
                Constants.ColorDefaultLine = Color.FromArgb(255, Constants.LineRed, Constants.LineGreen, Constants.LineBlue);
            };
            GwenHelper.CreateLabeledControl(coloroptions, "Blue", blueS);
            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
            var coloroptionsaccel = GwenHelper.CreateHeaderPanel(parent, "Accel Line Color");
            //coloroptionsaccel.IsDisabled = true;
            var redSAccel = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.AccelerationLineColorRed,
            };

            redSAccel.ValueChanged += (o, e) =>
            {
                Settings.AccelerationLineColorRed = (int)redSAccel.Value;
                Constants.AccelerationLineRed     = (int)redSAccel.Value;
                Settings.Save();
                Constants.ColorAccelerationLine = Color.FromArgb(255, Constants.AccelerationLineRed, Constants.AccelerationLineGreen, Constants.AccelerationLineBlue);
            };
            GwenHelper.CreateLabeledControl(coloroptionsaccel, "Red", redSAccel);
            var greenSAccel = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.AccelerationLineColorGreen,
            };

            greenSAccel.ValueChanged += (o, e) =>
            {
                Settings.AccelerationLineColorGreen = (int)greenSAccel.Value;
                Constants.AccelerationLineGreen     = (int)greenSAccel.Value;
                Settings.Save();
                Constants.ColorAccelerationLine = Color.FromArgb(255, Constants.AccelerationLineRed, Constants.AccelerationLineGreen, Constants.AccelerationLineBlue);
            };
            GwenHelper.CreateLabeledControl(coloroptionsaccel, "Green", greenSAccel);
            var blueSAccel = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.AccelerationLineColorBlue,
            };

            blueSAccel.ValueChanged += (o, e) =>
            {
                Settings.AccelerationLineColorBlue = (int)blueSAccel.Value;
                Constants.AccelerationLineBlue     = (int)blueSAccel.Value;
                Settings.Save();
                Constants.ColorAccelerationLine = Color.FromArgb(255, Constants.AccelerationLineRed, Constants.AccelerationLineGreen, Constants.AccelerationLineBlue);
            };
            GwenHelper.CreateLabeledControl(coloroptionsaccel, "Blue", blueSAccel);
            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
            var coloroptionsscenery = GwenHelper.CreateHeaderPanel(parent, "Scenery Line Color");
            var redSScnery          = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.SceneryLineColorRed,
            };

            redSScnery.ValueChanged += (o, e) =>
            {
                Settings.SceneryLineColorRed = (int)redSScnery.Value;
                Constants.SceneryLineRed     = (int)redSScnery.Value;
                Settings.Save();
                Constants.ColorSceneryLine = Color.FromArgb(Constants.SceneryLineRed, Constants.SceneryLineGreen, Constants.SceneryLineBlue);
            };
            GwenHelper.CreateLabeledControl(coloroptionsscenery, "Red", redSScnery);
            var greenSScenery = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.SceneryLineColorGreen,
            };

            greenSScenery.ValueChanged += (o, e) =>
            {
                Settings.SceneryLineColorGreen = (int)greenSScenery.Value;
                Constants.SceneryLineGreen     = (int)greenSScenery.Value;
                Settings.Save();
                Constants.ColorSceneryLine = Color.FromArgb(Constants.SceneryLineRed, Constants.SceneryLineGreen, Constants.SceneryLineBlue);
            };
            GwenHelper.CreateLabeledControl(coloroptionsscenery, "Green", greenSScenery);
            var blueSScenery = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.SceneryLineColorBlue,
            };

            blueSScenery.ValueChanged += (o, e) =>
            {
                Settings.SceneryLineColorBlue = (int)blueSScenery.Value;
                Constants.SceneryLineBlue     = (int)blueSScenery.Value;
                Settings.Save();
                Constants.ColorSceneryLine = Color.FromArgb(Constants.SceneryLineRed, Constants.SceneryLineGreen, Constants.SceneryLineBlue);
            };
            GwenHelper.CreateLabeledControl(coloroptionsscenery, "Blue", blueSScenery);

            GwenHelper.AddCheckbox(lineoptions, "Enable Custom Line Colors", Settings.MainLine, (o, e) =>
            {
                Settings.MainLine = ((Checkbox)o).IsChecked;
                Settings.Save();
                coloroptions.IsDisabled        = !((Checkbox)o).IsChecked;
                coloroptionsaccel.IsDisabled   = !((Checkbox)o).IsChecked;
                coloroptionsscenery.IsDisabled = !((Checkbox)o).IsChecked;
            });
            coloroptions.IsDisabled        = !Settings.MainLine;
            coloroptionsaccel.IsDisabled   = !Settings.MainLine;
            coloroptionsscenery.IsDisabled = !Settings.MainLine;
        }
Exemple #13
0
        private void PopulateSceneryLine(ControlBase parent)
        {
            Constants.SceneryRed   = Settings.SceneryColorRed;
            Constants.SceneryGreen = Settings.SceneryColorGreen;
            Constants.SceneryBlue  = Settings.SceneryColorBlue;

            var scenery      = GwenHelper.CreateHeaderPanel(parent, "Line Options");
            var colorscenery = GwenHelper.CreateHeaderPanel(parent, "RGB");

            colorscenery.IsDisabled = !Settings.SceneryColorChange;
            GwenHelper.AddCheckbox(scenery, "Line Customization", Settings.SceneryColorChange, (o, e) =>
            {
                Settings.SceneryColorChange = ((Checkbox)o).IsChecked;
                Settings.Save();

                colorscenery.IsDisabled = !((Checkbox)o).IsChecked;
            });

            var redS = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.SceneryColorRed,
            };

            redS.ValueChanged += (o, e) =>
            {
                Settings.SceneryColorRed = (int)redS.Value;
                Constants.SceneryRed     = (int)redS.Value;
                Settings.Save();
                Constants.SceneryLineColored = Color.FromArgb(Constants.SceneryRed, Constants.SceneryGreen, Constants.SceneryBlue);
                _editor.LineColorsChanged();
            };
            GwenHelper.CreateLabeledControl(colorscenery, "Red", redS);
            var greenS = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.SceneryColorGreen,
            };

            greenS.ValueChanged += (o, e) =>
            {
                Settings.SceneryColorGreen = (int)greenS.Value;
                Constants.SceneryGreen     = (int)greenS.Value;
                Settings.Save();
                Constants.SceneryLineColored = Color.FromArgb(Constants.SceneryRed, Constants.SceneryGreen, Constants.SceneryBlue);
                _editor.LineColorsChanged();
            };
            GwenHelper.CreateLabeledControl(colorscenery, "Green", greenS);
            var blueS = new Spinner(null)
            {
                Min   = 0,
                Max   = 255,
                Value = Settings.SceneryColorBlue,
            };

            blueS.ValueChanged += (o, e) =>
            {
                Settings.SceneryColorBlue = (int)blueS.Value;
                Constants.SceneryBlue     = (int)blueS.Value;
                Settings.Save();
                Constants.SceneryLineColored = Color.FromArgb(Constants.SceneryRed, Constants.SceneryGreen, Constants.SceneryBlue);
                _editor.LineColorsChanged();
            };
            GwenHelper.CreateLabeledControl(colorscenery, "Blue", blueS);
        }
Exemple #14
0
        private void PopulateTools(ControlBase parent)
        {
            var select = GwenHelper.CreateHeaderPanel(parent, "Select Tool -- Line Info");
            var length = GwenHelper.AddCheckbox(select, "Show Length", Settings.Editor.ShowLineLength, (o, e) =>
            {
                Settings.Editor.ShowLineLength = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var angle = GwenHelper.AddCheckbox(select, "Show Angle", Settings.Editor.ShowLineAngle, (o, e) =>
            {
                Settings.Editor.ShowLineAngle = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var showid = GwenHelper.AddCheckbox(select, "Show ID", Settings.Editor.ShowLineID, (o, e) =>
            {
                Settings.Editor.ShowLineID = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            Panel panelSnap = GwenHelper.CreateHeaderPanel(parent, "Snapping");
            var   linesnap  = GwenHelper.AddCheckbox(panelSnap, "Snap New Lines", Settings.Editor.SnapNewLines, (o, e) =>
            {
                Settings.Editor.SnapNewLines = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var movelinesnap = GwenHelper.AddCheckbox(panelSnap, "Snap Line Movement", Settings.Editor.SnapMoveLine, (o, e) =>
            {
                Settings.Editor.SnapMoveLine = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var forcesnap = GwenHelper.AddCheckbox(panelSnap, "Force X/Y snap", Settings.Editor.ForceXySnap, (o, e) =>
            {
                Settings.Editor.ForceXySnap = ((Checkbox)o).IsChecked;
                Settings.Save();
            });
            var onsk = GwenHelper.CreateHeaderPanel(parent, "Onion Skinning Options");
            var osb  = new Spinner(null)
            {
                Min   = 0,
                Max   = 100,
                Value = Settings.OnionSkinningBack,
            };

            osb.ValueChanged += (o, e) =>
            {
                Settings.OnionSkinningBack = (int)osb.Value;
                Settings.Save();
            };
            GwenHelper.CreateLabeledControl(onsk, "Onionskinning Back", osb);

            var osf = new Spinner(null)
            {
                Min   = 0,
                Max   = 100,
                Value = Settings.OnionSkinningFront,
            };

            osf.ValueChanged += (o, e) =>
            {
                Settings.OnionSkinningFront = (int)osf.Value;
                Settings.Save();
            };
            GwenHelper.CreateLabeledControl(onsk, "Onionskinning Front", osf);

            forcesnap.Tooltip    = "Forces all lines drawn to\nsnap to a 45 degree angle";
            movelinesnap.Tooltip = "Snap to lines when using the\nselect tool to move a single line";
        }