Example #1
0
        Base CreateControls(Control.Base subject, int dock_idx, String name, int x, int y)
        {
            Control.GroupBox gb = new Control.GroupBox(this);
            gb.SetBounds(x, y, 200, 150);
            gb.Text = name;

            Control.Label l_width = new Control.Label(gb);
            l_width.SetSize(35, 15);
            l_width.Text = "Width:";

            Control.HorizontalSlider width = new HorizontalSlider(gb);
            width.Name = "Width";
            width.UserData.Add("test", subject);
            width.Min   = 50;
            width.Max   = 350;
            width.Value = 100;
            width.SetSize(55, 15);
            width.ValueChanged += WidthChanged;
            Align.PlaceRightBottom(width, l_width);

            Control.Label l_height = new Control.Label(gb);
            l_height.SetSize(35, 15);
            l_height.Text = "Height:";
            Align.PlaceRightBottom(l_height, width, 10);

            Control.HorizontalSlider height = new Control.HorizontalSlider(gb);
            height.Name = "Height";
            height.UserData.Add("test", subject);
            height.Min   = 50;
            height.Max   = 350;
            height.Value = 100;
            height.SetSize(55, 15);
            height.ValueChanged += HeightChanged;
            Align.PlaceRightBottom(height, l_height);

            Control.RadioButtonGroup dock = new RadioButtonGroup(gb, "Dock");
            dock.UserData.Add("test", subject); // store control that we are controlling
            dock.AddOption("Left");
            dock.AddOption("Top");
            dock.AddOption("Right");
            dock.AddOption("Bottom");
            dock.AddOption("Fill");
            dock.SetSelection(dock_idx);
            Align.PlaceDownLeft(dock, l_width, 5);
            //dock.DrawDebugOutlines = true;
            dock.Invalidate();

            Control.Label l_margin = new Control.Label(gb);
            l_margin.Text = "Margin:";
            l_margin.SetBounds(75, 20, 35, 15);
            //Align.PlaceRightBottom(l_margin, dock);
            // can't use Align to anchor with 'dock' because radio group is resized only after layout ~_~
            // this is become really cumbersome
            //l_margin.DrawDebugOutlines = true;

            Control.HorizontalSlider margin = new HorizontalSlider(gb);
            margin.Name = "Margin";
            margin.UserData.Add("test", subject);
            margin.Min   = 0;
            margin.Max   = 50;
            margin.Value = 10;
            margin.SetSize(55, 15);
            margin.ValueChanged += MarginChanged;
            Align.PlaceRightBottom(margin, l_margin);

            dock.SelectionChanged += DockChanged;

            return(gb);
        }
Example #2
0
        private void CreateBasicTab(TabControl tcontainer)
        {
            var container = tcontainer.AddPage("Basic").Page;

            tcontainer.Dock = Gwen.Pos.Fill;
            //modes
            GroupBox gb      = new GroupBox(container);
            var      modesgb = gb;

            gb.Text   = "Modes";
            gb.Width  = 180;
            gb.Height = 160;
            var marg = tcontainer.Margin;

            marg.Bottom       = 5;
            tcontainer.Margin = marg;
            marg        = gb.Margin;
            marg.Bottom = 15;
            marg.Right  = 5;
            gb.Margin   = marg;
            RecurseLayout(Skin);
            Gwen.Align.AlignBottom(gb);
            Gwen.Align.AlignRight(gb);
            LabeledCheckBox lcb = new LabeledCheckBox(gb);

            marg              = lcb.Margin;
            marg.Top         += 5;
            lcb.Margin        = marg;
            lcb.Text          = "Recording Mode";
            lcb.Dock          = Pos.Top;
            lcb.IsChecked     = game.SettingRecordingMode;
            lcb.CheckChanged += (o, e) => { game.SettingRecordingMode = ((LabeledCheckBox)o).IsChecked; };
            lcb.SetToolTipText(@"Disables many editor features
and changes the client so it can be 
recorded with a specific aesthetic");
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Color Playback";
            lcb.IsChecked     = game.SettingColorPlayback;
            lcb.CheckChanged += (o, e) => { game.SettingColorPlayback = ((LabeledCheckBox)o).IsChecked; };
            lcb.SetToolTipText(@"During playback the lines will no
longer turn black by default, and 
will stay as they are in editor mode");
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Hit Test";
            lcb.IsChecked     = game.HitTest;
            lcb.CheckChanged += (o, e) => { game.HitTest = ((LabeledCheckBox)o).IsChecked; };
            lcb.SetToolTipText(@"During playback, hitting a line will turn it 
the color of the original line.");
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Preview Mode";
            lcb.IsChecked     = game.SettingPreviewMode;
            lcb.CheckChanged += (o, e) => { game.SettingPreviewMode = ((LabeledCheckBox)o).IsChecked; };
            lcb.Dock          = Pos.Top;
            lcb.SetToolTipText(@"The opposite of Color Playback. The editor will
shoe the lines as black instead");
            //

            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Zero Start";
            lcb.IsChecked     = game.Track.ZeroStart;
            lcb.CheckChanged += (o, e) => { game.Track.ZeroStart = ((LabeledCheckBox)o).IsChecked; };
            lcb.Dock          = Pos.Top;
            lcb.SetToolTipText(@"Starts the track with 0 momentum");

            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Smooth Camera";
            lcb.IsChecked     = Settings.Default.SmoothCamera;
            lcb.CheckChanged += (o, e) =>
            {
                Settings.Default.SmoothCamera = ((LabeledCheckBox)o).IsChecked;
                Settings.Default.Save();
            };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Onion Skinning";
            lcb.IsChecked     = game.SettingOnionSkinning;
            lcb.CheckChanged += (o, e) =>
            {
                game.SettingOnionSkinning = ((LabeledCheckBox)o).IsChecked;
                game.Invalidate();
            };
            lcb.Dock = Pos.Top;
            //
            gb          = new GroupBox(container);
            gb.Text     = "Editor View";
            gb.Width    = 180;
            gb.Height   = 100;
            marg        = gb.Margin;
            marg.Bottom = 15;
            marg.Right  = 5;
            gb.Margin   = marg;
            Gwen.Align.AlignTop(gb);
            Gwen.Align.AlignRight(gb);
            Align.PlaceDownLeft(modesgb, gb);
            lcb               = new LabeledCheckBox(gb);
            marg              = lcb.Margin;
            marg.Top         += 5;
            lcb.Margin        = marg;
            lcb.Text          = "Contact Lines";
            lcb.IsChecked     = game.SettingDrawContactPoints;
            lcb.CheckChanged += (o, e) => { game.SettingDrawContactPoints = ((LabeledCheckBox)o).IsChecked; };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Momentum Vectors";
            lcb.IsChecked     = game.SettingMomentumVectors;
            lcb.CheckChanged += (o, e) => { game.SettingMomentumVectors = ((LabeledCheckBox)o).IsChecked; };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Gravity Wells";
            lcb.IsChecked     = game.SettingRenderGravityWells;
            lcb.CheckChanged += (o, e) => { game.SettingRenderGravityWells = ((LabeledCheckBox)o).IsChecked; game.InvalidateTrack(); };
            lcb.Dock          = Pos.Top;
            //playback
            gb          = new GroupBox(container);
            gb.Text     = "Playback";
            gb.Width    = 180;
            gb.Height   = 150;
            marg        = gb.Margin;
            marg.Bottom = 5;
            marg.Right  = 5;
            gb.Margin   = marg;
            Gwen.Align.AlignTop(gb);
            Gwen.Align.AlignLeft(gb);
            RadioButtonGroup rbg = new RadioButtonGroup(gb);

            rbg.Text = "Playback Zoom";
            rbg.AddOption("Current Zoom");
            rbg.AddOption("Default Zoom");
            rbg.AddOption("Specific Zoom");
            rbg.SetSelection(Settings.Default.PlaybackZoom);
            rbg.SelectionChanged += (o, e) =>
            {
                Settings.Default.PlaybackZoom = ((RadioButtonGroup)o).SelectedIndex;
                Settings.Default.Save();
            };
            rbg.Dock = Pos.Top;
            rbg.AutoSizeToContents = false;
            rbg.Height             = 90;
            var nud = new NumericUpDown(rbg);

            nud.Value         = Settings.Default.PlaybackZoomSpecific;
            nud.Max           = 24;
            nud.Min           = 1;
            nud.Dock          = Pos.Bottom;
            nud.ValueChanged += (o, e) =>
            {
                Settings.Default.PlaybackZoomSpecific = ((NumericUpDown)o).Value;
                Settings.Default.Save();
            };
            var cbplayback = new ComboBox(gb);

            cbplayback.Dock = Pos.Top;
            for (var i = 0; i < GLWindow.MotionArray.Length; i++)
            {
                var f = (GLWindow.MotionArray[i] / 40f);
                cbplayback.AddItem("Playback: " + f + "x", f.ToString(CultureInfo.InvariantCulture), f);
            }
            cbplayback.SelectByName(game.SettingDefaultPlayback.ToString(CultureInfo.InvariantCulture));
            cbplayback.ItemSelected += (o, e) =>
            {
                game.SettingDefaultPlayback = (float)e.SelectedItem.UserData;
            };
            var cbslowmo = new ComboBox(gb);

            cbslowmo.Dock = Pos.Top;
            var fpsarray = new[] { 1, 2, 5, 10, 20 };

            for (var i = 0; i < fpsarray.Length; i++)
            {
                cbslowmo.AddItem("Slowmo FPS: " + fpsarray[i], fpsarray[i].ToString(CultureInfo.InvariantCulture),
                                 fpsarray[i]);
            }
            cbslowmo.SelectByName(game.SettingSlowmoSpeed.ToString(CultureInfo.InvariantCulture));
            cbslowmo.ItemSelected += (o, e) =>
            {
                game.SettingSlowmoSpeed = (int)e.SelectedItem.UserData;
            };
            //editor
            var backup = gb;

            gb          = new GroupBox(container);
            gb.Text     = "Editor";
            gb.Width    = 180;
            gb.Height   = 170;
            marg        = gb.Margin;
            marg.Bottom = 5;
            marg.Right  = 5;
            gb.Margin   = marg;
            Gwen.Align.PlaceDownLeft(gb, backup);
            //Gwen.Align.AlignRight(gb);
            lcb               = new LabeledCheckBox(gb);
            marg              = lcb.Margin;
            marg.Top         += 5;
            lcb.Margin        = marg;
            lcb.Text          = "All Pink Lifelock";
            lcb.IsChecked     = Settings.Default.PinkLifelock;
            lcb.CheckChanged += (o, e) => { Settings.Default.PinkLifelock = ((LabeledCheckBox)o).IsChecked; Settings.Default.Save(); };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Disable Line Snap";
            lcb.IsChecked     = game.SettingDisableSnap;
            lcb.CheckChanged += (o, e) => { game.SettingDisableSnap = ((LabeledCheckBox)o).IsChecked; };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Force XY Snap";
            lcb.IsChecked     = game.SettingForceXySnap;
            lcb.CheckChanged += (o, e) => { game.SettingForceXySnap = ((LabeledCheckBox)o).IsChecked; };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Superzoom";
            lcb.IsChecked     = Settings.Default.SuperZoom;
            lcb.CheckChanged += (o, e) => { Settings.Default.SuperZoom = ((LabeledCheckBox)o).IsChecked; Settings.Default.Save(); };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "White BG";
            lcb.SetToolTipText(@"For if you're a bad person");
            lcb.IsChecked     = Settings.Default.WhiteBG;
            lcb.CheckChanged += (o, e) =>
            {
                Settings.Default.WhiteBG = ((LabeledCheckBox)o).IsChecked;
                Settings.Default.Save();
                if (!Settings.Default.NightMode)
                {
                    GL.ClearColor(Settings.Default.WhiteBG ? GLWindow.ColorWhite : GLWindow.ColorOffwhite);
                }
            };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Night Mode";
            lcb.IsChecked     = Settings.Default.NightMode;
            lcb.CheckChanged += (o, e) =>
            {
                if (((LabeledCheckBox)o).IsChecked)
                {
                    GL.ClearColor(new Color4(50, 50, 60, 255));
                }
                else
                {
                    GL.ClearColor(Settings.Default.WhiteBG ? GLWindow.ColorWhite : GLWindow.ColorOffwhite);
                }
                Settings.Default.NightMode = ((LabeledCheckBox)o).IsChecked;
                Settings.Default.Save();
                game.Canvas.ButtonsToggleNightmode();
                game.Track.RefreshTrack();
            };
            lcb.Dock = Pos.Top;
            lcb      = new LabeledCheckBox(gb);
            lcb.Text = "Live Line Editing";
            lcb.SetToolTipText("For the line adjust tool during playback\r\nEnable this if you have a slow PC");
            lcb.IsChecked     = Settings.Default.LiveAdjustment;
            lcb.CheckChanged += (o, e) => { Settings.Default.LiveAdjustment = ((LabeledCheckBox)o).IsChecked; Settings.Default.Save(); };
            lcb.Dock          = Pos.Top;
        }
        private void CreateBasicTab(TabControl tcontainer)
        {
            var container = tcontainer.AddPage("Basic").Page;

            tcontainer.Dock = Gwen.Pos.Fill;
            //modes
            GroupBox gb      = new GroupBox(container);
            var      modesgb = gb;

            gb.Text   = "Modes";
            gb.Width  = 180;
            gb.Height = 200;
            var marg = tcontainer.Margin;

            marg.Bottom       = 5;
            tcontainer.Margin = marg;
            marg        = gb.Margin;
            marg.Bottom = 15;
            marg.Right  = 5;
            gb.Margin   = marg;
            RecurseLayout(Skin);
            Gwen.Align.AlignBottom(gb);
            Gwen.Align.AlignRight(gb);
            LabeledCheckBox lcb = new LabeledCheckBox(gb);

            marg              = lcb.Margin;
            marg.Top         += 5;
            lcb.Margin        = marg;
            lcb.Text          = "Recording Mode";
            lcb.Dock          = Pos.Top;
            lcb.IsChecked     = Settings.Local.RecordingMode;
            lcb.CheckChanged += (o, e) => { Settings.Local.RecordingMode = ((LabeledCheckBox)o).IsChecked; };
            lcb.SetToolTipText(@"Disables many editor features
and changes the client so it can be 
recorded with a specific aesthetic");
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Color Playback";
            lcb.IsChecked     = Settings.Local.ColorPlayback;
            lcb.CheckChanged += (o, e) => { Settings.Local.ColorPlayback = ((LabeledCheckBox)o).IsChecked; };
            lcb.SetToolTipText(@"During playback the lines will no
longer turn black by default, and 
will stay as they are in editor mode");
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Hit Test";
            lcb.IsChecked     = Settings.Local.HitTest;
            lcb.CheckChanged += (o, e) => { Settings.Local.HitTest = ((LabeledCheckBox)o).IsChecked; };
            lcb.SetToolTipText(@"During playback, hitting a line will turn it 
the color of the original line.");
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Preview Mode";
            lcb.IsChecked     = Settings.Local.PreviewMode;
            lcb.CheckChanged += (o, e) => { Settings.Local.PreviewMode = ((LabeledCheckBox)o).IsChecked; };
            lcb.Dock          = Pos.Top;
            lcb.SetToolTipText(@"The opposite of Color Playback. The editor will
show the lines as black instead");
            //

            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Zero Start";
            lcb.IsChecked     = game.Track.ZeroStart;
            lcb.CheckChanged += (o, e) => { game.Track.ZeroStart = ((LabeledCheckBox)o).IsChecked; };
            lcb.Dock          = Pos.Top;
            lcb.SetToolTipText(@"Starts the track with 0 momentum");

            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Smooth Camera";
            lcb.IsChecked     = Settings.SmoothCamera;
            lcb.CheckChanged += (o, e) =>
            {
                Settings.SmoothCamera = ((LabeledCheckBox)o).IsChecked;
                Settings.Save();
                game.Track.Stop();
                game.Track.InitCamera();
                var round = FindChildByName("roundlegacycamera", true);
                foreach (var c in round.Children)
                {
                    c.IsDisabled = Settings.SmoothCamera;
                }
            };
            lcb.Dock = Pos.Top;
            lcb.SetToolTipText("Enables a smooth predictive camera.\r\nExperimental and subject to change.");

            lcb               = new LabeledCheckBox(gb);
            lcb.Name          = "roundlegacycamera";
            lcb.Text          = "Round Legacy Camera";
            lcb.IsChecked     = Settings.RoundLegacyCamera;
            lcb.CheckChanged += (o, e) =>
            {
                Settings.RoundLegacyCamera = ((LabeledCheckBox)o).IsChecked;
                Settings.Save();
                game.Track.Stop();
                game.Track.InitCamera();
            };
            lcb.Dock = Pos.Top;
            lcb.SetToolTipText("If the new camera is disabled\r\nmakes the camera bounds round\r\ninstead of rectangle");

            foreach (var c in lcb.Children)
            {
                c.IsDisabled = Settings.SmoothCamera;
            }
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Smooth Playback";
            lcb.IsChecked     = Settings.SmoothPlayback;
            lcb.CheckChanged += (o, e) =>
            {
                Settings.SmoothPlayback = ((LabeledCheckBox)o).IsChecked;
                Settings.Save();
            };
            lcb.SetToolTipText("Interpolates frames for a smooth 60+ fps.");
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Onion Skinning";
            lcb.IsChecked     = Settings.Local.OnionSkinning;
            lcb.CheckChanged += (o, e) =>
            {
                Settings.Local.OnionSkinning = ((LabeledCheckBox)o).IsChecked;
                game.Invalidate();
            };
            lcb.Dock = Pos.Top;
            //
            gb          = new GroupBox(container);
            gb.Text     = "Editor View";
            gb.Width    = 180;
            gb.Height   = 100;
            marg        = gb.Margin;
            marg.Bottom = 15;
            marg.Right  = 5;
            gb.Margin   = marg;
            Gwen.Align.AlignTop(gb);
            Gwen.Align.AlignRight(gb);
            Align.PlaceDownLeft(modesgb, gb);
            lcb               = new LabeledCheckBox(gb);
            marg              = lcb.Margin;
            marg.Top         += 5;
            lcb.Margin        = marg;
            lcb.Text          = "Contact Lines";
            lcb.IsChecked     = Settings.Local.DrawContactPoints;
            lcb.CheckChanged += (o, e) => { Settings.Local.DrawContactPoints = ((LabeledCheckBox)o).IsChecked; };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Momentum Vectors";
            lcb.IsChecked     = Settings.Local.MomentumVectors;
            lcb.CheckChanged += (o, e) => { Settings.Local.MomentumVectors = ((LabeledCheckBox)o).IsChecked; };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Gravity Wells";
            lcb.IsChecked     = Settings.Local.RenderGravityWells;
            lcb.CheckChanged += (o, e) => { Settings.Local.RenderGravityWells = ((LabeledCheckBox)o).IsChecked; game.Track.Invalidate(); };
            lcb.Dock          = Pos.Top;
            //playback
            gb          = new GroupBox(container);
            gb.Text     = "Playback";
            gb.Width    = 180;
            gb.Height   = 150;
            marg        = gb.Margin;
            marg.Bottom = 5;
            marg.Right  = 5;
            gb.Margin   = marg;
            Gwen.Align.AlignTop(gb);
            Gwen.Align.AlignLeft(gb);
            RadioButtonGroup rbg = new RadioButtonGroup(gb);

            rbg.Text = "Playback Zoom";
            rbg.AddOption("Current Zoom");
            rbg.AddOption("Default Zoom");
            rbg.AddOption("Specific Zoom");
            rbg.SetSelection(Settings.PlaybackZoomType);
            rbg.SelectionChanged += (o, e) =>
            {
                Settings.PlaybackZoomType = ((RadioButtonGroup)o).SelectedIndex;
                Settings.Save();
            };
            rbg.Dock = Pos.Top;
            rbg.AutoSizeToContents = false;
            rbg.Height             = 90;
            var nud = new NumericUpDown(rbg);

            nud.Value         = Settings.PlaybackZoomValue;
            nud.Max           = 24;
            nud.Min           = 1;
            nud.Dock          = Pos.Bottom;
            nud.ValueChanged += (o, e) =>
            {
                Settings.PlaybackZoomValue = ((NumericUpDown)o).Value;
                Settings.Save();
            };
            var cbplayback = new ComboBox(gb);

            cbplayback.Dock = Pos.Top;
            for (var i = 0; i < Constants.MotionArray.Length; i++)
            {
                var f = (Constants.MotionArray[i] / (float)Constants.PhysicsRate);
                cbplayback.AddItem("Playback: " + f + "x", f.ToString(CultureInfo.InvariantCulture), f);
            }
            cbplayback.SelectByName(Settings.Local.DefaultPlayback.ToString(CultureInfo.InvariantCulture));
            cbplayback.ItemSelected += (o, e) =>
            {
                Settings.Local.DefaultPlayback = (float)e.SelectedItem.UserData;
            };
            var cbslowmo = new ComboBox(gb);

            cbslowmo.Dock = Pos.Top;
            var fpsarray = new[] { 1, 2, 5, 10, 20 };

            for (var i = 0; i < fpsarray.Length; i++)
            {
                cbslowmo.AddItem("Slowmo FPS: " + fpsarray[i], fpsarray[i].ToString(CultureInfo.InvariantCulture),
                                 fpsarray[i]);
            }
            cbslowmo.SelectByName(Settings.Local.SlowmoSpeed.ToString(CultureInfo.InvariantCulture));
            cbslowmo.ItemSelected += (o, e) =>
            {
                Settings.Local.SlowmoSpeed = (int)e.SelectedItem.UserData;
            };
            //editor
            var backup = gb;

            gb          = new GroupBox(container);
            gb.Text     = "Editor";
            gb.Width    = 180;
            gb.Height   = 170;
            marg        = gb.Margin;
            marg.Bottom = 5;
            marg.Right  = 5;
            gb.Margin   = marg;
            Gwen.Align.PlaceDownLeft(gb, backup);
            //Gwen.Align.AlignRight(gb);
            lcb        = new LabeledCheckBox(gb);
            marg       = lcb.Margin;
            marg.Top  += 5;
            lcb.Margin = marg;
            lcb.Text   = "All Pink Lifelock";
            lcb.SetToolTipText(@"I hope you know where the manual is.");
            lcb.IsChecked     = Settings.PinkLifelock;
            lcb.CheckChanged += (o, e) => { Settings.PinkLifelock = ((LabeledCheckBox)o).IsChecked; Settings.Save(); };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Disable Line Snap";
            lcb.IsChecked     = Settings.Local.DisableSnap;
            lcb.CheckChanged += (o, e) => { Settings.Local.DisableSnap = ((LabeledCheckBox)o).IsChecked; };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Force XY Snap";
            lcb.IsChecked     = Settings.Local.ForceXySnap;
            lcb.CheckChanged += (o, e) => { Settings.Local.ForceXySnap = ((LabeledCheckBox)o).IsChecked; };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Superzoom";
            lcb.IsChecked     = Settings.SuperZoom;
            lcb.CheckChanged += (o, e) => { Settings.SuperZoom = ((LabeledCheckBox)o).IsChecked; Settings.Save(); };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "White BG";
            lcb.IsChecked     = Settings.WhiteBG;
            lcb.CheckChanged += (o, e) =>
            {
                Settings.WhiteBG = ((LabeledCheckBox)o).IsChecked;
                Settings.Save();
            };
            lcb.Dock          = Pos.Top;
            lcb               = new LabeledCheckBox(gb);
            lcb.Text          = "Night Mode";
            lcb.IsChecked     = Settings.NightMode;
            lcb.CheckChanged += (o, e) =>
            {
                Settings.NightMode = ((LabeledCheckBox)o).IsChecked;
                Settings.Save();
                game.Invalidate();
                game.Canvas.ButtonsToggleNightmode();
            };
            lcb.Dock = Pos.Top;

            lcb               = new LabeledCheckBox(container);
            lcb.Text          = "Check for Updates";
            lcb.IsChecked     = Settings.CheckForUpdates;
            lcb.CheckChanged += (o, e) => { Settings.CheckForUpdates = ((LabeledCheckBox)o).IsChecked; Settings.Save(); };
            lcb.Dock          = Pos.Bottom;
        }
Example #4
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";
        }