Ejemplo n.º 1
0
        /// <summary>
        ///     Initialize weather specific settings
        /// </summary>
        /// <param name="settings">The settings instance to use</param>
        /// <param name="biome">The biome we're working with</param>
        /// <param name="key">The key to use</param>
        /// <param name="weathers">The weathers to iterate through</param>
        /// <param name="visibilityFunc">Our base visibility function</param>
        private void InitWeatherSettings(ModSettingsPack settings, BiomeDef biome, string key,
                                         List <WeatherDef> weathers,
                                         SettingHandle.ShouldDisplay visibilityFunc)
        {
            // Per-biome rain and snowfall multipliers
            foreach (var weather in weathers)
            {
                weatherCommonalities[weather] = new WeatherData(settings, biome, weather, visibilityFunc);
            }

            SpacerDrawer.GenerateSpacer("ColdDesertNights_WeatherMiscSettings".Translate(), settings, visibilityFunc);

            // If we're allowed to bypass the rain limits
            settingIgnoreRainLimit = settings.GetHandle(
                $"ignore_rain_limit_{key}",
                "    " + "ColdDesertNights_IgnoreRainLimit".Translate(),
                "ColdDesertNights_IgnoreRainLimit_Desc".Translate(), false);

            // Force weather into the given range
            minWeatherTemperature = settings.GetHandle(
                $"weather_temp_min_{key}",
                "    " + "ColdDesertNights_WeatherTempMin".Translate(),
                "ColdDesertNights_WeatherTempMin_Desc".Translate(), -999f);
            maxWeatherTemperature = settings.GetHandle(
                $"weather_temp_max_{key}",
                "    " + "ColdDesertNights_WeatherTempMax".Translate(),
                "ColdDesertNights_WeatherTempMax_Desc".Translate(), 999f);

            // Set our visibility predicates:
            settingIgnoreRainLimit.VisibilityPredicate        =
                minWeatherTemperature.VisibilityPredicate     =
                    maxWeatherTemperature.VisibilityPredicate =
                        visibilityFunc;
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Initializes the weather data from the given <see cref="ModSettingsPack" /> settings
        ///     and <see cref="WeatherDef" />, creating our settings in the process.
        /// </summary>
        /// <param name="settings">The setting pack to use</param>
        /// <param name="biome">The biome to use</param>
        /// <param name="weather">The weather to base this off of</param>
        /// <param name="visibilityFunc">Function which returns if we should display this now</param>
        public WeatherData(ModSettingsPack settings, BiomeDef biome, WeatherDef weather,
                           SettingHandle.ShouldDisplay visibilityFunc)
        {
            this.weather = weather;
            var curCommonality =
                biome.baseWeatherCommonalities.FirstOrDefault(wc => wc.weather == weather)?.commonality ?? 0f;

            // Init our settings...
            SpacerDrawer.GenerateSpacer(GenText.ToTitleCaseSmart(weather.label), settings, visibilityFunc);

            commonality = settings.GetHandle($"weather_{biome.defName}_{weather.defName}",
                                             "    " + "ColdDesertNights_BiomeWeather".Translate(),
                                             "ColdDesertNights_BiomeWeather_Desc".Translate(curCommonality), curCommonality,
                                             Validators.FloatRangeValidator(0f, float.MaxValue));

            allowRepeating = settings.GetHandle($"weather_{biome.defName}_{weather.defName}_repeating",
                                                "    " + "ColdDesertNights_BiomeWeatherRepeating".Translate(),
                                                "ColdDesertNights_BiomeWeatherRepeating_Desc".Translate(
                                                    (weather.repeatable ? "ColdDesertNights_Checked" : "ColdDesertNights_Unchecked").Translate()),
                                                weather.repeatable);

            allowEarly = settings.GetHandle($"weather_{biome.defName}_{weather.defName}_early",
                                            "    " + "ColdDesertNights_BiomeWeatherEarly".Translate(),
                                            "ColdDesertNights_BiomeWeatherEarly_Desc".Translate(
                                                (Favorability.Neutral <= weather.favorability
                        ? "ColdDesertNights_Checked"
                        : "ColdDesertNights_Unchecked").Translate()),
                                            Favorability.Neutral <= weather.favorability);

            // And set our visibility predicates...
            commonality.VisibilityPredicate
                    = allowRepeating.VisibilityPredicate
                    = allowEarly.VisibilityPredicate
                    = visibilityFunc;
        }