/// <summary> /// Sets the settings for this menu screen to display. /// </summary> /// <param name="worldSettings">The world settings to display</param> public void SetSettings(MyObjectBuilder_WorldSettings worldSettings) { m_systemGeneratorCombo.SelectItemByKey((long)worldSettings.GeneratorSettings.SystemGenerator); m_asteroidGeneratorCombo.SelectItemByKey((long)worldSettings.GeneratorSettings.AsteroidGenerator); m_enableVanillaPlanetsCheckbox.IsChecked = worldSettings.GeneratorSettings.AllowVanillaPlanets; m_planetCountSlider.SetValues(worldSettings.GeneratorSettings.MinMaxPlanets.Min, worldSettings.GeneratorSettings.MinMaxPlanets.Max); m_asteroidCountSlider.SetValues(worldSettings.GeneratorSettings.MinMaxAsteroidObjects.Min, worldSettings.GeneratorSettings.MinMaxAsteroidObjects.Max); m_orbitDistancesSlider.SetValues(worldSettings.GeneratorSettings.MinMaxOrbitDistance.Min / 1000, worldSettings.GeneratorSettings.MinMaxOrbitDistance.Max / 1000); m_asteroidDensitySlider.Value = worldSettings.GeneratorSettings.AsteroidDensity; if (worldSettings.GeneratorSettings.WorldSize >= 0) { m_worldSizeSlider.Value = worldSettings.GeneratorSettings.WorldSize / 1000; } else { m_worldSizeSlider.Value = -1; } m_planetSizeCapSlider.Value = worldSettings.GeneratorSettings.PlanetSettings.PlanetSizeCap; m_planetSizeMultSlider.Value = worldSettings.GeneratorSettings.PlanetSettings.PlanetSizeMultiplier; m_planetMoonBasePropSlider.Value = worldSettings.GeneratorSettings.PlanetSettings.BaseMoonProbability; m_planetRingBasePropSlider.Value = worldSettings.GeneratorSettings.PlanetSettings.BaseRingProbability; m_planetMoonMinMaxSlider.SetValues(worldSettings.GeneratorSettings.PlanetSettings.MinMaxMoons.Min, worldSettings.GeneratorSettings.PlanetSettings.MinMaxMoons.Max); m_planetGPSModeCombo.SelectItemByKey((long)worldSettings.GeneratorSettings.GPSSettings.PlanetGPSMode); m_asteroidGPSModeCombo.SelectItemByKey((long)worldSettings.GeneratorSettings.GPSSettings.AsteroidGPSMode); m_moonGPSModeCombo.SelectItemByKey((long)worldSettings.GeneratorSettings.GPSSettings.MoonGPSMode); }
/// <summary> /// Runs on click of the parent item box. Sets the ranges for the sliders and resets the values. /// </summary> /// <param name="box">The listbox which calls this method on item clicked</param> private void OnParentItemClicked(MyGuiControlListbox box) { if (box.SelectedItems.Count > 0) { m_spawnButton.Enabled = true; m_radiusSlider.Enabled = true; m_widthSlider.Enabled = true; m_asteroidSizesSlider.Enabled = true; m_nameBox.Enabled = true; var parent = box.SelectedItems[box.SelectedItems.Count - 1].UserData as MySystemObject; var settings = MySettingsSession.Static.Settings.GeneratorSettings; if (parent == m_fetchedStarSytem.CenterObject) { m_radiusSlider.MinValue = settings.MinMaxOrbitDistance.Min / 1000; m_radiusSlider.MaxValue = settings.WorldSize < 0 ? int.MaxValue / 1000 : settings.WorldSize / 1000; m_radiusSlider.Value = m_radiusSlider.MinValue + (m_radiusSlider.MaxValue - m_radiusSlider.MinValue) / 2; m_widthSlider.MinValue = settings.MinMaxOrbitDistance.Min / 2000; m_widthSlider.MaxValue = settings.MinMaxOrbitDistance.Min / 1000; m_widthSlider.Value = m_radiusSlider.MinValue + (m_radiusSlider.MaxValue - m_radiusSlider.MinValue) / 2; m_asteroidSizesSlider.SetValues(32, 1024); m_parentScreen.CameraLookAt(Vector3D.Zero, new Vector3D(0, 0, m_radiusSlider.Value * 2000)); RenderSpherePreview(GetDataFromGui()); return; } else { if (parent.Type == MySystemObjectType.PLANET || parent.Type == MySystemObjectType.MOON) { var planet = parent as MySystemPlanet; List <MyEntityList.MyEntityListInfoItem> planets = MyEntityList.GetEntityList(MyEntityList.MyEntityTypeEnum.Planets); MyPlanet planetEntity = null; foreach (var p in planets) { var e = MyEntities.GetEntityById(p.EntityId) as MyPlanet; if (e.EntityId == planet.EntityId) { planetEntity = MyEntities.GetEntityById(p.EntityId) as MyPlanet; } } if (planetEntity != null) { m_radiusSlider.MinValue = planetEntity.AverageRadius / 1000; m_radiusSlider.MaxValue = (float)planet.Diameter / 1000; m_radiusSlider.Value = m_radiusSlider.MinValue + (m_radiusSlider.MaxValue - m_radiusSlider.MinValue) / 2; m_widthSlider.MinValue = (planetEntity.MaximumRadius - planetEntity.MinimumRadius) / 1000; m_widthSlider.MaxValue = (float)planet.Diameter / 5000f; m_widthSlider.Value = m_widthSlider.MinValue + (m_widthSlider.MaxValue - m_widthSlider.MinValue) / 2; m_asteroidSizesSlider.SetValues(32, 1024); m_parentScreen.CameraLookAt(planet.CenterPosition, (float)planet.Diameter * 2f); RenderSpherePreview(GetDataFromGui()); return; } } } } m_radiusSlider.Enabled = false; m_asteroidSizesSlider.Enabled = false; m_nameBox.Enabled = false; m_spawnButton.Enabled = false; m_widthSlider.Enabled = false; }
/// <summary> /// Sets all slider values to reflect the instance asteroid object /// </summary> /// <param name="instance">The instance of the asteroid object</param> private void SetSliderValues(MySystemAsteroids instance) { if (instance.AsteroidTypeName != MyAsteroidRingProvider.TYPE_NAME) { return; } MyAsteroidRingData data = MyAsteroidRingProvider.Static.GetInstanceData(instance) as MyAsteroidRingData; var planet = m_fetchedStarSytem.GetObjectById(instance.ParentId) as MySystemPlanet; if (planet == null) { var settings = MySettingsSession.Static.Settings.GeneratorSettings; m_radiusSlider.MinValue = settings.MinMaxOrbitDistance.Min / 1000; m_radiusSlider.MaxValue = settings.WorldSize < 0 ? int.MaxValue / 1000 : settings.WorldSize / 1000; m_radiusSlider.Value = m_radiusSlider.MinValue + (m_radiusSlider.MaxValue - m_radiusSlider.MinValue) / 2; m_radiusSlider.Enabled = true; m_widthSlider.MinValue = settings.MinMaxOrbitDistance.Min / 2000; m_widthSlider.MaxValue = settings.MinMaxOrbitDistance.Max / 1000; m_widthSlider.Value = m_widthSlider.MinValue + (m_widthSlider.MaxValue - m_widthSlider.MinValue) / 2; m_widthSlider.Enabled = true; m_heightSlider.MinValue = m_widthSlider.MinValue / 10; m_heightSlider.MaxValue = m_widthSlider.MaxValue / 10; m_heightSlider.Value = m_heightSlider.MinValue + (m_heightSlider.MaxValue - m_heightSlider.MinValue) / 2; m_heightSlider.Enabled = true; m_asteroidSizesSlider.Enabled = true; m_asteroidSizesSlider.SetValues(32, 1024); m_angleXSlider.Enabled = true; m_angleXSlider.Value = 0; m_angleYSlider.Enabled = true; m_angleYSlider.Value = 0; m_angleZSlider.Enabled = true; m_angleZSlider.Value = 0; return; } m_radiusSlider.MinValue = (int)planet.Diameter / 1000 * 0.75f; m_radiusSlider.MaxValue = (int)planet.Diameter / 1000 * 2f; m_radiusSlider.Value = (float)data.Radius / 1000; m_radiusSlider.Enabled = true; m_widthSlider.MinValue = (int)planet.Diameter / 1000 / 20f; m_widthSlider.MaxValue = (int)planet.Diameter / 1000 / 1.25f; m_widthSlider.Value = (float)data.Width / 1000; m_widthSlider.Enabled = true; m_heightSlider.MinValue = m_widthSlider.MinValue / 10; m_heightSlider.MaxValue = m_widthSlider.MaxValue / 10; m_heightSlider.Value = (float)data.Height / 1000; m_heightSlider.Enabled = true; m_asteroidSizesSlider.Enabled = true; m_asteroidSizesSlider.SetValues(instance.AsteroidSize.Min, instance.AsteroidSize.Max); m_angleXSlider.Enabled = true; m_angleXSlider.Value = (float)data.AngleDegrees.x; m_angleYSlider.Enabled = true; m_angleYSlider.Value = (float)data.AngleDegrees.y; m_angleZSlider.Enabled = true; m_angleZSlider.Value = (float)data.AngleDegrees.z; }