public static float GetCurrentWinterMovementDifficultyOffset(int tile, int?ticksAbs = null, StringBuilder explanation = null) { if (!ticksAbs.HasValue) { ticksAbs = GenTicks.TicksAbs; } Vector2 vector = Find.WorldGrid.LongLatOf(tile); SeasonUtility.GetSeason(GenDate.YearPercent(ticksAbs.Value, vector.x), vector.y, out var _, out var _, out var _, out var winter, out var _, out var permanentWinter); float num = winter + permanentWinter; num *= Mathf.InverseLerp(5f, 0f, GenTemperature.GetTemperatureFromSeasonAtTile(ticksAbs.Value, tile)); if (num > 0.01f) { float num2 = 2f * num; if (explanation != null) { explanation.AppendLine(); explanation.Append("Winter".Translate()); if (num < 0.999f) { explanation.Append(" (" + num.ToStringPercent("F0") + ")"); } explanation.Append(": "); explanation.Append(num2.ToStringWithSign("0.#")); } return(num2); } return(0f); }
public static int CalculatedCostAt(int tile, bool perceivedStatic, float yearPercent = -1f) { int num = 0; Tile tile2 = Find.WorldGrid[tile]; if (tile2.biome.impassable) { return(1000000); } if (yearPercent < 0.0) { yearPercent = (float)((float)WorldPathGrid.DayOfYearAt0Long / 60.0); } float yearPct = yearPercent; Vector2 vector = Find.WorldGrid.LongLatOf(tile); float num2 = default(float); float num3 = default(float); float num4 = default(float); float num5 = default(float); float num6 = default(float); float num7 = default(float); SeasonUtility.GetSeason(yearPct, vector.y, out num2, out num3, out num4, out num5, out num6, out num7); num += Mathf.RoundToInt((float)tile2.biome.pathCost_spring * num2 + (float)tile2.biome.pathCost_summer * num3 + (float)tile2.biome.pathCost_fall * num4 + (float)tile2.biome.pathCost_winter * num5 + (float)tile2.biome.pathCost_summer * num6 + (float)tile2.biome.pathCost_winter * num7); if (tile2.hilliness == Hilliness.Impassable) { return(1000000); } return(num + WorldPathGrid.CostFromTileHilliness(tile2.hilliness)); }
public static float GetCurrentWinterMovementDifficultyOffset(int tile, VehicleDef vehicleDef, int?ticksAbs = null, StringBuilder explanation = null) { if (ticksAbs == null) { ticksAbs = new int?(GenTicks.TicksAbs); } Vector2 vector = Find.WorldGrid.LongLatOf(tile); SeasonUtility.GetSeason(GenDate.YearPercent(ticksAbs.Value, vector.x), vector.y, out float num, out float num2, out float num3, out float num4, out float num5, out float num6); float num7 = num4 + num6; num7 *= Mathf.InverseLerp(MaxTempForWinterOffset, 0f, GenTemperature.GetTemperatureFromSeasonAtTile(ticksAbs.Value, tile)); if (num7 > 0.01f) { float num8 = WinterMovementDifficultyOffset * num7; if (explanation != null) { explanation.AppendLine(); explanation.Append("Winter".Translate()); if (num7 < 0.999f) { explanation.Append(" (" + num7.ToStringPercent("F0") + ")"); } explanation.Append(": "); explanation.Append(num8.ToStringWithSign("0.#")); //REDO - Add translated text for winter path cost multiplier } return(num8 * vehicleDef.properties.winterPathCostMultiplier); } return(0f); }
public static bool GetReportedSeason(ref Season __result, float yearPct, float latitude) { int year1000 = (int)(yearPct * 1000f); if (!yearLatitudeSeason.TryGetValue(year1000, out Dictionary <float, Season> latitudeSeason)) { latitudeSeason = new Dictionary <float, Season>(); yearLatitudeSeason.Add(year1000, latitudeSeason); } if (!latitudeSeason.TryGetValue(latitude, out Season season)) { SeasonUtility.GetSeason(yearPct, latitude, out float spring, out float summer, out float fall, out float winter, out float permanentSummer, out float permanentWinter); if (permanentSummer == 1f) { season = Season.PermanentSummer; } if (permanentWinter == 1f) { season = Season.PermanentWinter; } if (permanentSummer != 1f && permanentWinter != 1f) { season = GenMath.MaxBy(Season.Spring, spring, Season.Summer, summer, Season.Fall, fall, Season.Winter, winter); } latitudeSeason.Add(latitude, season); } __result = season; return(false); }
public static float GetCurrentWinterMovementDifficultyOffset(int tile, int?ticksAbs = null, StringBuilder explanation = null) { if (ticksAbs == null) { ticksAbs = new int?(GenTicks.TicksAbs); } Vector2 vector = Find.WorldGrid.LongLatOf(tile); float yearPct = GenDate.YearPercent((long)ticksAbs.Value, vector.x); float num; float num2; float num3; float num4; float num5; float num6; SeasonUtility.GetSeason(yearPct, vector.y, out num, out num2, out num3, out num4, out num5, out num6); float num7 = num4 + num6; num7 *= Mathf.InverseLerp(5f, 0f, GenTemperature.GetTemperatureFromSeasonAtTile(ticksAbs.Value, tile)); float result; if (num7 > 0.01f) { float num8 = 2f * num7; if (explanation != null) { explanation.AppendLine(); explanation.Append("Winter".Translate()); if (num7 < 0.999f) { explanation.Append(" (" + num7.ToStringPercent("F0") + ")"); } explanation.Append(": "); explanation.Append(num8.ToStringWithSign("0.#")); } result = num8; } else { result = 0f; } return(result); }