/// <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; }
/// <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; }