Skip to content

Commit

Permalink
As requested in #17, all control sliders that are associated with the…
Browse files Browse the repository at this point in the history
… plugin can now be clicked while holding control, to be able to enter a number rather than using the slider.
  • Loading branch information
thorwin99 committed Feb 29, 2020
1 parent 8bbe991 commit 39ed187
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 35 deletions.
35 changes: 35 additions & 0 deletions SEWorldGenPlugin/GUI/Controls/MyGuiControlClickableSlider.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using Sandbox;
using Sandbox.Graphics.GUI;
using VRage.Input;
using VRage.Utils;
using VRageMath;

namespace SEWorldGenPlugin.GUI.Controls
{
public class MyGuiControlClickableSlider : MyGuiControlSlider
{
public MyGuiControlClickableSlider(Vector2? position = null, float minValue = 0f, float maxValue = 1f, float width = 0.29f, float? defaultValue = null, Vector4? color = null, string labelText = null, int labelDecimalPlaces = 1, float labelScale = 0.8f, float labelSpaceWidth = 0f, string labelFont = "White", string toolTip = null, MyGuiControlSliderStyleEnum visualStyle = MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum originAlign = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, bool intValue = false, bool showLabel = false)
: base(position, minValue, maxValue, width, defaultValue, color, labelText, labelDecimalPlaces, labelScale, labelSpaceWidth, labelFont, toolTip, visualStyle, originAlign, intValue, showLabel)
{

}

protected override bool OnSliderClicked()
{
if (MyInput.Static.IsAnyCtrlKeyPressed())
{
MyGuiScreenDialogAmount dialog = new MyGuiScreenDialogAmount(this.MinValue, this.MaxValue, MyCommonTexts.DialogAmount_SetValueCaption, parseAsInteger: IntValue, defaultAmount: Value, backgroundTransition: MySandboxGame.Config.UIBkOpacity, guiTransition: MySandboxGame.Config.UIOpacity);
dialog.OnConfirmed += m_confirmValue;
MyGuiSandbox.AddScreen(dialog);
return true;
}
return base.OnSliderClicked();
}

private void m_confirmValue(float value)
{
Value = value;
ValueChanged(this);
}
}
}
39 changes: 25 additions & 14 deletions SEWorldGenPlugin/GUI/PluginAdminMenu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using Sandbox.Graphics.GUI;
using SEWorldGenPlugin.Generator;
using SEWorldGenPlugin.Generator.Asteroids;
using SEWorldGenPlugin.GUI.Controls;
using SEWorldGenPlugin.ObjectBuilders;
using SEWorldGenPlugin.Session;
using SEWorldGenPlugin.Utilities;
Expand Down Expand Up @@ -42,12 +43,12 @@ public class PluginAdminMenu : MyGuiScreenAdminMenu
private MyGuiControlLabel m_ringRoidSizeValue;
private MyGuiControlLabel m_ringWidthValue;

private MyGuiControlSlider m_ringDistanceSlider;
private MyGuiControlSlider m_ringAngleXSlider;
private MyGuiControlSlider m_ringAngleYSlider;
private MyGuiControlSlider m_ringAngleZSlider;
private MyGuiControlSlider m_ringRoidSizeSlider;
private MyGuiControlSlider m_ringWidthSlider;
private MyGuiControlClickableSlider m_ringDistanceSlider;
private MyGuiControlClickableSlider m_ringAngleXSlider;
private MyGuiControlClickableSlider m_ringAngleYSlider;
private MyGuiControlClickableSlider m_ringAngleZSlider;
private MyGuiControlClickableSlider m_ringRoidSizeSlider;
private MyGuiControlClickableSlider m_ringWidthSlider;

private MyGuiControlButton m_addRingButton;
private MyGuiControlButton m_removeRingButton;
Expand All @@ -59,7 +60,7 @@ public class PluginAdminMenu : MyGuiScreenAdminMenu
//Elements for Planet Menu
private MyGuiControlListbox m_planetDefListBox;
private MyGuiControlLabel m_planetSizeValue;
private MyGuiControlSlider m_planetSizeSlider;
private MyGuiControlClickableSlider m_planetSizeSlider;
private MyGuiControlButton m_spawnPlanetButton;

private MyPlanetGeneratorDefinition m_selectedDefinition;
Expand Down Expand Up @@ -223,7 +224,7 @@ private void BuildPlanetMenu()

m_currentPosition.Y += 0.025f;

m_planetSizeSlider = new MyGuiControlSlider(m_currentPosition + new Vector2(0.001f, 0f), 120f, 2400f, intValue: true, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_PLANET_SIZE);
m_planetSizeSlider = new MyGuiControlClickableSlider(m_currentPosition + new Vector2(0.001f, 0f), 120f, 2400f, intValue: true, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_PLANET_SIZE);
m_planetSizeSlider.Size = new Vector2(0.285f, 1f);
m_planetSizeSlider.DefaultValue = 1200f;
m_planetSizeSlider.Value = m_planetSizeSlider.DefaultValue.Value;
Expand Down Expand Up @@ -325,7 +326,7 @@ private void BuildRingMenu()

vector.Y += 0.025f;

m_ringDistanceSlider = new MyGuiControlSlider(vector + new Vector2(0.001f, 0f), 5000f, 1000000f, intValue: true, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_DISTANCE, showLabel: false);//Make dynamic
m_ringDistanceSlider = new MyGuiControlClickableSlider(vector + new Vector2(0.001f, 0f), 5000f, 1000000f, intValue: true, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_DISTANCE, showLabel: false);//Make dynamic
m_ringDistanceSlider.Size = new Vector2(0.285f, 1f);
m_ringDistanceSlider.DefaultValue = 100000;
m_ringDistanceSlider.Value = m_ringDistanceSlider.DefaultValue.Value;
Expand Down Expand Up @@ -359,7 +360,7 @@ private void BuildRingMenu()

vector.Y += 0.025f;

m_ringWidthSlider = new MyGuiControlSlider(vector + new Vector2(0.001f, 0f), SettingsSession.Static.Settings.GeneratorSettings.PlanetSettings.RingSettings.MinPlanetRingWidth, SettingsSession.Static.Settings.GeneratorSettings.PlanetSettings.RingSettings.MaxPlanetRingWidth, intValue: true, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_WIDTH, showLabel: false);
m_ringWidthSlider = new MyGuiControlClickableSlider(vector + new Vector2(0.001f, 0f), SettingsSession.Static.Settings.GeneratorSettings.PlanetSettings.RingSettings.MinPlanetRingWidth, SettingsSession.Static.Settings.GeneratorSettings.PlanetSettings.RingSettings.MaxPlanetRingWidth, intValue: true, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_WIDTH, showLabel: false);
m_ringWidthSlider.Size = new Vector2(0.285f, 1f);
m_ringWidthSlider.DefaultValue = (SettingsSession.Static.Settings.GeneratorSettings.PlanetSettings.RingSettings.MinPlanetRingWidth + SettingsSession.Static.Settings.GeneratorSettings.PlanetSettings.RingSettings.MaxPlanetRingWidth) / 2;
m_ringWidthSlider.Value = m_ringWidthSlider.DefaultValue.Value;
Expand Down Expand Up @@ -393,7 +394,7 @@ private void BuildRingMenu()

vector.Y += 0.025f;

m_ringAngleXSlider = new MyGuiControlSlider(vector + new Vector2(0.001f, 0f), -45, 45, intValue: false, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_ANGLE);
m_ringAngleXSlider = new MyGuiControlClickableSlider(vector + new Vector2(0.001f, 0f), -45, 45, intValue: false, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_ANGLE);
m_ringAngleXSlider.Size = new Vector2(0.285f, 1f);
m_ringAngleXSlider.DefaultValue = 0;
m_ringAngleXSlider.Value = m_ringAngleXSlider.DefaultValue.Value;
Expand Down Expand Up @@ -427,7 +428,7 @@ private void BuildRingMenu()

vector.Y += 0.025f;

m_ringAngleYSlider = new MyGuiControlSlider(vector + new Vector2(0.001f, 0f), -45, 45, intValue: false, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_ANGLE);
m_ringAngleYSlider = new MyGuiControlClickableSlider(vector + new Vector2(0.001f, 0f), -45, 45, intValue: false, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_ANGLE);
m_ringAngleYSlider.Size = new Vector2(0.285f, 1f);
m_ringAngleYSlider.DefaultValue = 0;
m_ringAngleYSlider.Value = m_ringAngleYSlider.DefaultValue.Value;
Expand Down Expand Up @@ -461,7 +462,7 @@ private void BuildRingMenu()

vector.Y += 0.025f;

m_ringAngleZSlider = new MyGuiControlSlider(vector + new Vector2(0.001f, 0f), -45, 45, intValue: false, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_ANGLE);
m_ringAngleZSlider = new MyGuiControlClickableSlider(vector + new Vector2(0.001f, 0f), -45, 45, intValue: false, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_ANGLE);
m_ringAngleZSlider.Size = new Vector2(0.285f, 1f);
m_ringAngleZSlider.DefaultValue = 0;
m_ringAngleZSlider.Value = m_ringAngleZSlider.DefaultValue.Value;
Expand Down Expand Up @@ -495,7 +496,7 @@ private void BuildRingMenu()

vector.Y += 0.025f;

m_ringRoidSizeSlider = new MyGuiControlSlider(vector + new Vector2(0.001f, 0f), 128, 1028, intValue: true, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_ROID_SIZE);
m_ringRoidSizeSlider = new MyGuiControlClickableSlider(vector + new Vector2(0.001f, 0f), 128, 1028, intValue: true, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_ROID_SIZE);
m_ringRoidSizeSlider.Size = new Vector2(0.285f, 1f);
m_ringRoidSizeSlider.DefaultValue = 500;
m_ringRoidSizeSlider.Value = m_ringRoidSizeSlider.DefaultValue.Value;
Expand Down Expand Up @@ -530,6 +531,16 @@ private void BuildRingMenu()

Controls.Add(m_planetListBox);

m_ringAngleXSlider.Enabled = false;
m_ringAngleYSlider.Enabled = false;
m_ringAngleZSlider.Enabled = false;
m_ringDistanceSlider.Enabled = false;
m_ringWidthSlider.Enabled = false;
m_ringRoidSizeSlider.Enabled = false;
m_addRingButton.Enabled = false;
m_removeRingButton.Enabled = false;
m_teleportToRingButton.Enabled = false;

LoadPlanetsInWorld();
}

Expand Down
41 changes: 21 additions & 20 deletions SEWorldGenPlugin/GUI/PluginSettingsGui.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Sandbox;
using Sandbox.Game.Localization;
using Sandbox.Graphics.GUI;
using SEWorldGenPlugin.GUI.Controls;
using SEWorldGenPlugin.ObjectBuilders;
using SEWorldGenPlugin.Utilities;
using System;
Expand Down Expand Up @@ -43,16 +44,16 @@ public class PluginSettingsGui : MyGuiScreenBase
private MyGuiControlCheckbox m_moonGpsCheck;
private MyGuiControlCheckbox m_beltGpsCheck;
private MyGuiControlCombobox m_asteroidGeneratorCombo;
private MyGuiControlSlider m_asteroidDensitySlider;
private MyGuiControlSlider m_objAmountSlider;
private MyGuiControlSlider m_orbDistanceSlider;
private MyGuiControlSlider m_sizeMultiplierSlider;
private MyGuiControlSlider m_sizeCapSlider;
private MyGuiControlSlider m_moonProbSlider;
private MyGuiControlSlider m_ringWidthSlider;
private MyGuiControlSlider m_ringProbSlider;
private MyGuiControlSlider m_beltHeightSlider;
private MyGuiControlSlider m_beltProbSlider;
private MyGuiControlClickableSlider m_asteroidDensitySlider;
private MyGuiControlClickableSlider m_objAmountSlider;
private MyGuiControlClickableSlider m_orbDistanceSlider;
private MyGuiControlClickableSlider m_sizeMultiplierSlider;
private MyGuiControlClickableSlider m_sizeCapSlider;
private MyGuiControlClickableSlider m_moonProbSlider;
private MyGuiControlClickableSlider m_ringWidthSlider;
private MyGuiControlClickableSlider m_ringProbSlider;
private MyGuiControlClickableSlider m_beltHeightSlider;
private MyGuiControlClickableSlider m_beltProbSlider;

private MyGuiControlButton m_okButton;

Expand Down Expand Up @@ -119,16 +120,16 @@ public void BuildControls()
m_beltGpsCheck = new MyGuiControlCheckbox();
m_asteroidGeneratorCombo = new MyGuiControlCombobox(null, new Vector2(x2, 0.04f));
x2 += 0.05f;
m_asteroidDensitySlider = new MyGuiControlSlider(Vector2.Zero, 0.1f, 1f, x2, 0.6f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.ROID_DENS_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: false);
m_objAmountSlider = new MyGuiControlSlider(Vector2.Zero, 0f, 100f, x2, 15f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.SYS_OBJ_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
m_orbDistanceSlider = new MyGuiControlSlider(Vector2.Zero, 500f, 100000f, x2, 50500f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.ORB_DIST_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
m_sizeMultiplierSlider = new MyGuiControlSlider(Vector2.Zero, 1f, 10f, x2, 2f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.SIZE_MUL_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
m_sizeCapSlider = new MyGuiControlSlider(Vector2.Zero, 120f, 2400f, x2, 1200f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.SIZE_CAP_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
m_moonProbSlider = new MyGuiControlSlider(Vector2.Zero, 0f, 1f, x2, 0.5f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.MOON_PROB_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: false);
m_ringWidthSlider = new MyGuiControlSlider(Vector2.Zero, 10000f, 100000f, x2, 15000f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.RING_WIDTH_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
m_ringProbSlider = new MyGuiControlSlider(Vector2.Zero, 0f, 1f, x2, 0.5f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.RING_PROB_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: false);
m_beltHeightSlider = new MyGuiControlSlider(Vector2.Zero, 4000f, 40000f, x2, 22000f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.BELT_HEIGHT_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
m_beltProbSlider = new MyGuiControlSlider(Vector2.Zero, 0f, 1f, x2, 0.4f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.BELT_PROB_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: false);
m_asteroidDensitySlider = new MyGuiControlClickableSlider(Vector2.Zero, 0.1f, 1f, x2, 0.6f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.ROID_DENS_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: false);
m_objAmountSlider = new MyGuiControlClickableSlider(Vector2.Zero, 0f, 100f, x2, 15f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.SYS_OBJ_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
m_orbDistanceSlider = new MyGuiControlClickableSlider(Vector2.Zero, 500f, 100000f, x2, 50500f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.ORB_DIST_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
m_sizeMultiplierSlider = new MyGuiControlClickableSlider(Vector2.Zero, 1f, 10f, x2, 2f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.SIZE_MUL_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
m_sizeCapSlider = new MyGuiControlClickableSlider(Vector2.Zero, 120f, 2400f, x2, 1200f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.SIZE_CAP_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
m_moonProbSlider = new MyGuiControlClickableSlider(Vector2.Zero, 0f, 1f, x2, 0.5f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.MOON_PROB_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: false);
m_ringWidthSlider = new MyGuiControlClickableSlider(Vector2.Zero, 10000f, 100000f, x2, 15000f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.RING_WIDTH_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
m_ringProbSlider = new MyGuiControlClickableSlider(Vector2.Zero, 0f, 1f, x2, 0.5f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.RING_PROB_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: false);
m_beltHeightSlider = new MyGuiControlClickableSlider(Vector2.Zero, 4000f, 40000f, x2, 22000f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.BELT_HEIGHT_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
m_beltProbSlider = new MyGuiControlClickableSlider(Vector2.Zero, 0f, 1f, x2, 0.4f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.BELT_PROB_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: false);

m_asteroidDensityValue = MakeLabel(String.Format("{0:0.00}", m_asteroidDensitySlider.Value));
m_asteroidDensityValue.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER;
Expand Down
1 change: 1 addition & 0 deletions SEWorldGenPlugin/SEWorldGenPlugin.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@
<Compile Include="Generator\ProceduralGen\ProceduralPlanetModule.cs" />
<Compile Include="Generator\SystemGenerator.cs" />
<Compile Include="Generator\SystemGenerator.Networking.cs" />
<Compile Include="GUI\Controls\MyGuiControlClickableSlider.cs" />
<Compile Include="GUI\PluginAdminMenu.cs" />
<Compile Include="GUI\PluginGuiScreenNewGame.cs" />
<Compile Include="GUI\PluginGuiScreenWorkshopGame.cs" />
Expand Down
2 changes: 1 addition & 1 deletion SEWorldGenPlugin/Utilities/MyPluginTexts.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class ToolTips

public readonly string ADMIN_RING_DISTANCE = "The distance of the ring to the planet in meters";
public readonly string ADMIN_RING_WIDTH = "The width of the ring in meters";
public readonly string ADMIN_RING_ANGLE = "The angle of the ring in degrees";
public readonly string ADMIN_RING_ANGLE = "The angle of the ring around the wanted axis in degrees";
public readonly string ADMIN_RING_ROID_SIZE = "The size of the asteroids in the ring in meters";
public readonly string ADMIN_ADD_RING_BUTTON = "Adds the ring to the planet";
public readonly string ADMIN_REMOVE_RING_BUTTON = "Removes the ring from the planet. All previously generated Asteroids will stay.";
Expand Down

0 comments on commit 39ed187

Please sign in to comment.