Esempio n. 1
0
        /// <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;
        }