示例#1
0
        private void CreateAudioTab()
        {
            var panel = TabPanel.AddTab("AUDIO", new Widget
            {
                Border  = "border-thin",
                Padding = new Margin(4, 4, 0, 0)
            });

            MasterVolume = panel.AddChild(LabelAndDockWidget("Master Volume", new HorizontalFloatSlider
            {
                ScrollArea = 1.0f,
                OnScroll   = OnItemChanged
            })).GetChild(1) as HorizontalFloatSlider;

            SFXVolume = panel.AddChild(LabelAndDockWidget("SFX Volume", new HorizontalFloatSlider
            {
                ScrollArea = 1.0f,
                OnScroll   = OnItemChanged
            })).GetChild(1) as HorizontalFloatSlider;

            MusicVolume = panel.AddChild(LabelAndDockWidget("Music Volume", new HorizontalFloatSlider
            {
                ScrollArea = 1.0f,
                OnScroll   = OnItemChanged
            })).GetChild(1) as HorizontalFloatSlider;
        }
示例#2
0
        private void CreateAudioTab()
        {
            var panel = TabPanel.AddTab("AUDIO", new Widget
            {
                Border  = "border-thin",
                Padding = new Margin(4, 4, 0, 0)
            });

            if (!SoundManager.HasAudioDevice)
            {
                panel.AddChild(new Widget()
                {
                    Text       = String.Format("ERROR. SOUND IS DISABLED: {0}", SoundManager.AudioError),
                    TextColor  = Color.DarkRed.ToVector4(),
                    Font       = "font16",
                    AutoLayout = AutoLayout.DockTop
                });
            }

            MasterVolume = panel.AddChild(LabelAndDockWidget("Master Volume", new HorizontalFloatSlider
            {
                ScrollArea      = 1.0f,
                OnSliderChanged = OnItemChanged,
                Tooltip         = "Volume of all sounds in the game.",
            })).GetChild(1) as HorizontalFloatSlider;

            SFXVolume = panel.AddChild(LabelAndDockWidget("SFX Volume", new HorizontalFloatSlider
            {
                ScrollArea      = 1.0f,
                OnSliderChanged = OnItemChanged,
                Tooltip         = "Volume of sound effects."
            })).GetChild(1) as HorizontalFloatSlider;

            MusicVolume = panel.AddChild(LabelAndDockWidget("Music Volume", new HorizontalFloatSlider
            {
                ScrollArea      = 1.0f,
                OnSliderChanged = OnItemChanged,
                Tooltip         = "Volume of background music."
            })).GetChild(1) as HorizontalFloatSlider;

            panel.AddChild(new Button()
            {
                Text        = "Mixer...",
                AutoLayout  = AutoLayout.DockTop,
                MaximumSize = new Point(128, 32),
                OnClick     = (sender, args) => panel.Root.ShowModalPopup(new AudioMixerWidget()
                {
                    Border = "border-fancy",
                    Rect   = GuiRoot.RenderData.VirtualScreen
                })
            });
        }
示例#3
0
        private void CreateGameplayTab()
        {
            var panel = TabPanel.AddTab("GAMEPLAY", new Widget
            {
                Border  = "border-thin",
                Padding = new Margin(4, 4, 0, 0)
            });

            // Todo: Display actual value beside slider.
            MoveSpeed = panel.AddChild(LabelAndDockWidget("Camera Move Speed", new HorizontalFloatSlider
            {
                ScrollArea = 20,
                OnScroll   = OnItemChanged
            })).GetChild(1) as HorizontalFloatSlider;

            ZoomSpeed = panel.AddChild(LabelAndDockWidget("Camera Zoom Speed", new HorizontalFloatSlider
            {
                ScrollArea = 2,
                OnScroll   = OnItemChanged
            })).GetChild(1) as HorizontalFloatSlider;

            InvertZoom = panel.AddChild(new CheckBox
            {
                Text = "Invert Zoom",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            EdgeScrolling = panel.AddChild(new CheckBox
            {
                Text = "Edge Scrolling",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            PlayIntro = panel.AddChild(new CheckBox
            {
                Text = "Play Intro",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            FogOfWar = panel.AddChild(new CheckBox
            {
                Text = "Fog Of War",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;
        }
示例#4
0
        private void CreateGraphicsTab()
        {
            var panel = TabPanel.AddTab("GRAPHICS", new Widget
            {
                Border  = "border-thin",
                Padding = new Margin(4, 4, 4, 4)
            });

            var split = panel.AddChild(new Gui.Widgets.Columns
            {
                AutoLayout = AutoLayout.DockFill
            }) as Gui.Widgets.Columns;

            var leftPanel = split.AddChild(new Widget
            {
                Padding = new Margin(2, 2, 2, 2)
            });

            var rightPanel = split.AddChild(new Widget
            {
                Padding = new Margin(2, 2, 2, 2)
            });

            EasyGraphicsSetting = leftPanel.AddChild(LabelAndDockWidget("Easy Settings", new Gui.Widgets.ComboBox
            {
                Items = new String[] { "Lowest", "Low", "Medium", "High", "Highest", "Custom" }.ToList(),
                OnSelectedIndexChanged = OnEasySettingChanged,
                Border = "border-thin"
            })).GetChild(1) as Gui.Widgets.ComboBox;

            Resolution = leftPanel.AddChild(LabelAndDockWidget("Resolution", new Gui.Widgets.ComboBox
            {
                Items = DisplayModes.Select(dm => dm.Key).ToList(),
                OnSelectedIndexChanged = OnItemChanged,
                Border  = "border-thin",
                Tooltip = "Game screen size",
            })).GetChild(1) as Gui.Widgets.ComboBox;

            Fullscreen = leftPanel.AddChild(new CheckBox
            {
                Text = "Fullscreen",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop,
                Tooltip            = "When checked, game will take up the whole screen."
            }) as CheckBox;

            ChunkDrawDistance = leftPanel.AddChild(LabelAndDockWidget("Terrain Draw Distance", new HorizontalFloatSlider
            {
                ScrollArea      = 1000f,
                OnSliderChanged = OnItemChanged,
                Tooltip         = "Higher values allow you to see more terrain. Lower values will make the game run faster."
            })).GetChild(1) as HorizontalFloatSlider;

            /*
             * VertexCullDistance = leftPanel.AddChild(LabelAndDockWidget("Geometry Draw Distance",
             *  new HorizontalFloatSlider
             * {
             *  ScrollArea = 1000f,
             *  OnSliderChanged = OnItemChanged,
             *  Tooltip = "Higher values allow you to see more terrain. Lower values will make the game run faster."
             * })).GetChild(1) as HorizontalFloatSlider;
             */
            /*
             * GenerateDistance = leftPanel.AddChild(LabelAndDockWidget("Generate Distance",
             *  new HorizontalFloatSlider
             *  {
             *      ScrollArea = 1000f,
             *      OnScrollValueChanged = OnItemChanged
             *  })).GetChild(1) as HorizontalFloatSlider;
             */

            Glow = leftPanel.AddChild(new CheckBox
            {
                Text = "Glow",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop,
                Tooltip            = "When checked, bright parts of the screen will have a glow effect. Turn off to make the game run faster."
            }) as CheckBox;

            Antialiasing = rightPanel.AddChild(LabelAndDockWidget("Antialiasing", new Gui.Widgets.ComboBox
            {
                Items = AntialiasingOptions.Select(o => o.Key).ToList(),
                OnSelectedIndexChanged = OnItemChanged,
                Border  = "border-thin",
                Tooltip = "Higher values mean fewer jagged pixels. For best quality use FXAA. Fastest is no antialiasing."
            })).GetChild(1) as Gui.Widgets.ComboBox;

            ReflectTerrain = rightPanel.AddChild(new CheckBox
            {
                Text = "Water Reflects Terrain",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop,
                Tooltip            = "When checked, water will reflect the terrain. Turn off to increase game performance."
            }) as CheckBox;

            ReflectEntities = rightPanel.AddChild(new CheckBox
            {
                Text = "Water Reflects Entities",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop,
                Tooltip            = "When checked, water will reflect entities. Turn off to increase game performance."
            }) as CheckBox;

            AmbientOcclusion = rightPanel.AddChild(new CheckBox
            {
                Text = "Ambient Occlusion",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop,
                Tooltip            = "Enables smooth lighting effects on terrain. Turn off to increase game performance."
            }) as CheckBox;


            CursorLight = rightPanel.AddChild(new CheckBox
            {
                Text = "Cursor Light",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop,
                Tooltip            = "When checked, the cursor casts light. Turn off to increase game performance."
            }) as CheckBox;

            VSync = rightPanel.AddChild(new CheckBox
            {
                Text               = "Vertical Sync",
                Tooltip            = "When checked, the framerate will be fixed to the monitor refresh rate.",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            EntityLight = rightPanel.AddChild(new CheckBox
            {
                Text = "Dynamic Entity Lighting",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop,
                Tooltip            = "When checked, creatures underground will be in shadow. Turn off to increase game performance."
            }) as CheckBox;

            SelfIllumination = rightPanel.AddChild(new CheckBox
            {
                Text = "Ore Glow",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop,
                Tooltip            = "When checked certain ores will glow underground. Turn off to increase game performance."
            }) as CheckBox;

            ParticlePhysics = leftPanel.AddChild(new CheckBox
            {
                Text = "Particle Physics",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop,
                Tooltip            = "When checked, certain particles will bounce off of terrain. Turn off to increase game performance."
            }) as CheckBox;

            Motes = leftPanel.AddChild(new CheckBox
            {
                Text = "Motes",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop,
                Tooltip            = "When checked, detail grass motes will spawn. Turn off to increase game performance."
            }) as CheckBox;

            //NumMotes = leftPanel.AddChild(LabelAndDockWidget("Max Number of Entities",
            //     new HorizontalFloatSlider
            //     {
            //         ScrollArea = 2048 - 100,
            //         OnSliderChanged = OnItemChanged,
            //         Tooltip = "Controls how many of each type of entity will get drawn to the screen. Higher values mean more detail. Lower values mean better performance."

            //     })).GetChild(1) as HorizontalFloatSlider;

            /*
             * LightMap = leftPanel.AddChild(new CheckBox
             * {
             *  Text = "Light Maps",
             *  OnCheckStateChange = OnItemChanged,
             *  AutoLayout = AutoLayout.DockTop,
             *  Tooltip = "When checked, light maps will be used for pixelated terrain lighting. Turning this off increases performance."
             * }) as CheckBox;
             *
             * DynamicShadows = leftPanel.AddChild(new CheckBox
             * {
             *  Text = "Dynamic Shadows",
             *  OnCheckStateChange = OnItemChanged,
             *  AutoLayout = AutoLayout.DockTop,
             *  Tooltip = "When checked, the sun will cast shadows on terrain and entities. Turning this off increases performance."
             * }) as CheckBox;
             */
        }
示例#5
0
        private void CreateGameplayTab()
        {
            var panel = TabPanel.AddTab("GAMEPLAY", new Widget
            {
                Border  = "border-thin",
                Padding = new Margin(4, 4, 0, 0)
            });

            panel.AddChild(new Widget
            {
                Text               = "Restore default settings",
                MinimumSize        = new Point(0, 20),
                AutoLayout         = AutoLayout.DockTop,
                Padding            = new Margin(0, 0, 4, 4),
                Border             = "border-button",
                ChangeColorOnHover = true,
                OnClick            = (sender, args) =>
                {
                    var prompt = GuiRoot.ConstructWidget(new Gui.Widgets.Confirm
                    {
                        Text    = "Set all settings to their default?",
                        OnClose = (confirm) =>
                        {
                            if ((confirm as Gui.Widgets.Confirm).DialogResult == Gui.Widgets.Confirm.Result.OKAY)
                            {
                                GameSettings.Default = new GameSettings.Settings();
                                RebuildGui();
                                ConfirmSettings();
                            }
                        }
                    });

                    GuiRoot.ShowDialog(prompt);
                }
            });

            // Todo: Display actual value beside slider.
            MoveSpeed = panel.AddChild(LabelAndDockWidget("Camera Move Speed", new HorizontalFloatSlider
            {
                ScrollArea      = 20,
                OnSliderChanged = OnItemChanged,
                Tooltip         = "Sensitivity of the camera to the movement keys"
            })).GetChild(1) as HorizontalFloatSlider;

            ZoomSpeed = panel.AddChild(LabelAndDockWidget("Camera Zoom Speed", new HorizontalFloatSlider
            {
                ScrollArea      = 2,
                OnSliderChanged = OnItemChanged,
                Tooltip         = "Sensitivity of the camera to zooming"
            })).GetChild(1) as HorizontalFloatSlider;

            InvertZoom = panel.AddChild(new CheckBox
            {
                Text               = "Invert Zoom",
                Tooltip            = "When checked, zooming in/out with the scroll wheel will be inverted",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            ZoomTowardMouse = panel.AddChild(new CheckBox
            {
                Text               = "Zoom to Mouse",
                Tooltip            = "When checked, when you zoom in, you will zoom toward the mouse.",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;


            EdgeScrolling = panel.AddChild(new CheckBox
            {
                Text               = "Edge Scrolling",
                Tooltip            = "When checked, moving the cursor to the edge of the screen will move the camera.",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            FollowSurface = panel.AddChild(new CheckBox
            {
                Text               = "Camera Follows Surface Height",
                Tooltip            = "When checked, the camera will follow the ground surface height when moving.",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            PlayIntro = panel.AddChild(new CheckBox
            {
                Text               = "Play Intro",
                Tooltip            = "When checked, the intro animation will play at the beginning of the game.",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            FogOfWar = panel.AddChild(new CheckBox
            {
                Text               = "Fog Of War",
                Tooltip            = "When checked, unexplored tiles underground will be invisible.",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            var guiScaleItems = new List <String>();

            for (int i = 1; i < 10; ++i)
            {
                if (i * 480 <= GameSettings.Default.ResolutionY)
                {
                    guiScaleItems.Add(i.ToString());
                }
            }

            GuiScale = panel.AddChild(LabelAndDockWidget("Gui Scale", new ComboBox
            {
                Items = guiScaleItems
            })).GetChild(1) as ComboBox;
            GuiAutoScale = panel.AddChild(new CheckBox
            {
                Text               = "Autoscale GUI",
                Tooltip            = "When checked, the GUI will get scaled up on high resolution screens",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            DisableTutorialForAllGames = panel.AddChild(new CheckBox
            {
                Text               = "Disable the tutorial for all new games",
                Tooltip            = "When checked, the tutorial will not open in new games.",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            if (World != null)
            {
                EnableTutorial = panel.AddChild(new CheckBox
                {
                    Text               = "Enable Tutorial",
                    Tooltip            = "When checked, tutorial will be displayed.",
                    OnCheckStateChange = OnItemChanged,
                    AutoLayout         = AutoLayout.DockTop
                }) as CheckBox;

                panel.AddChild(new Widget
                {
                    Text               = "Reset tutorial",
                    MinimumSize        = new Point(0, 20),
                    AutoLayout         = AutoLayout.DockTop,
                    Padding            = new Margin(0, 0, 4, 4),
                    Border             = "border-button",
                    ChangeColorOnHover = true,
                    OnClick            = (sender, args) => World.TutorialManager.ResetTutorials()
                });
            }

            Autosave = panel.AddChild(new CheckBox
            {
                Text               = "Enable Autosave",
                Tooltip            = "When checked, game will auto save.",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            AutoSaveFrequency = panel.AddChild(LabelAndDockWidget("Autosave Frequency           ", new HorizontalSlider
            {
                ScrollArea      = 115,
                OnSliderChanged = (widget) =>
                {
                    AutoSaveFrequency.GetChild(0).Text = String.Format("Autosave Frequency ({0})",
                                                                       (widget as HorizontalSlider).ScrollPosition + 5);
                    this.OnItemChanged(widget);
                },
                Tooltip = "Minutes between auto saves"
            }));

            SaveLocation = panel.AddChild(LabelAndDockWidget("Save Location", new EditableTextField
            {
                Tooltip      = "Where to look for save games. Leave blank to use default location.",
                Text         = "",
                OnTextChange = this.OnItemChanged
            })).GetChild(1) as EditableTextField;
        }
示例#6
0
        private void CreateGraphicsTab()
        {
            var panel = TabPanel.AddTab("GRAPHICS", new Widget
            {
                Border  = "border-thin",
                Padding = new Margin(4, 4, 4, 4)
            });

            var leftPanel = panel.AddChild(new Widget
            {
                MinimumSize = new Point(GuiRoot.VirtualScreen.Width / 2 - 4, 0),
                AutoLayout  = AutoLayout.DockLeft,
                Padding     = new Margin(2, 2, 2, 2)
            });

            var rightPanel = panel.AddChild(new Widget
            {
                AutoLayout = AutoLayout.DockFill,
                Padding    = new Margin(2, 2, 2, 2)
            });

            Resolution = leftPanel.AddChild(LabelAndDockWidget("Resolution", new Gum.Widgets.ComboBox
            {
                Items = DisplayModes.Select(dm => dm.Key).ToList(),
                OnSelectedIndexChanged = OnItemChanged,
                Border = "border-thin"
            })).GetChild(1) as Gum.Widgets.ComboBox;

            Fullscreen = leftPanel.AddChild(new CheckBox
            {
                Text = "Fullscreen",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            ChunkDrawDistance = leftPanel.AddChild(LabelAndDockWidget("Chunk Draw Distance", new HorizontalFloatSlider
            {
                ScrollArea = 1000f,
                OnScroll   = OnItemChanged
            })).GetChild(1) as HorizontalFloatSlider;

            VertexCullDistance = leftPanel.AddChild(LabelAndDockWidget("Vertex Cull Distance",
                                                                       new HorizontalFloatSlider
            {
                ScrollArea = 1000f,
                OnScroll   = OnItemChanged
            })).GetChild(1) as HorizontalFloatSlider;

            GenerateDistance = leftPanel.AddChild(LabelAndDockWidget("Generate Distance",
                                                                     new HorizontalFloatSlider
            {
                ScrollArea = 1000f,
                OnScroll   = OnItemChanged
            })).GetChild(1) as HorizontalFloatSlider;

            Glow = leftPanel.AddChild(new CheckBox
            {
                Text = "Glow",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            Antialiasing = rightPanel.AddChild(LabelAndDockWidget("Antialiasing", new Gum.Widgets.ComboBox
            {
                Items = AntialiasingOptions.Select(o => o.Key).ToList(),
                OnSelectedIndexChanged = OnItemChanged,
                Border = "border-thin"
            })).GetChild(1) as Gum.Widgets.ComboBox;

            ReflectTerrain = rightPanel.AddChild(new CheckBox
            {
                Text = "Reflect Terrain",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            ReflectEntities = rightPanel.AddChild(new CheckBox
            {
                Text = "Reflect Entities",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            Sunlight = rightPanel.AddChild(new CheckBox
            {
                Text = "Sunlight",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            AmbientOcclusion = rightPanel.AddChild(new CheckBox
            {
                Text = "Ambient Occlusion",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            Ramps = leftPanel.AddChild(new CheckBox
            {
                Text = "Ramps",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            CursorLight = rightPanel.AddChild(new CheckBox
            {
                Text = "Cursor Light",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            EntityLight = rightPanel.AddChild(new CheckBox
            {
                Text = "Entity Light",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            SelfIllumination = rightPanel.AddChild(new CheckBox
            {
                Text = "Ore Glow",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            ParticlePhysics = leftPanel.AddChild(new CheckBox
            {
                Text = "Particle Physics",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            Motes = leftPanel.AddChild(new CheckBox
            {
                Text = "Motes",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            NumMotes = leftPanel.AddChild(LabelAndDockWidget("Number of Motes",
                                                             new HorizontalFloatSlider
            {
                ScrollArea = 2048 - 100,
                OnScroll   = OnItemChanged
            })).GetChild(1) as HorizontalFloatSlider;

            LightMap = leftPanel.AddChild(new CheckBox
            {
                Text = "Light Maps",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;

            DynamicShadows = leftPanel.AddChild(new CheckBox
            {
                Text = "Dynamic Shadows",
                OnCheckStateChange = OnItemChanged,
                AutoLayout         = AutoLayout.DockTop
            }) as CheckBox;
        }