Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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);
        }