public static string Label(this Quadrum quadrum)
        {
            string result;

            switch (quadrum)
            {
            case Quadrum.Aprimay:
                result = "QuadrumAprimay".Translate();
                break;

            case Quadrum.Jugust:
                result = "QuadrumJugust".Translate();
                break;

            case Quadrum.Septober:
                result = "QuadrumSeptober".Translate();
                break;

            case Quadrum.Decembary:
                result = "QuadrumDecembary".Translate();
                break;

            default:
                result = "Unknown quadrum";
                break;
            }
            return(result);
        }
        public static Twelfth GetFirstTwelfth(this Quadrum quadrum)
        {
            Twelfth result;

            switch (quadrum)
            {
            case Quadrum.Aprimay:
                result = Twelfth.First;
                break;

            case Quadrum.Jugust:
                result = Twelfth.Fourth;
                break;

            case Quadrum.Septober:
                result = Twelfth.Seventh;
                break;

            case Quadrum.Decembary:
                result = Twelfth.Tenth;
                break;

            default:
                result = Twelfth.Undefined;
                break;
            }
            return(result);
        }
        public static Twelfth GetMiddleTwelfth(this Quadrum quadrum)
        {
            Twelfth result;

            switch (quadrum)
            {
            case Quadrum.Aprimay:
                result = Twelfth.Second;
                break;

            case Quadrum.Jugust:
                result = Twelfth.Fifth;
                break;

            case Quadrum.Septober:
                result = Twelfth.Eighth;
                break;

            case Quadrum.Decembary:
                result = Twelfth.Eleventh;
                break;

            default:
                result = Twelfth.Undefined;
                break;
            }
            return(result);
        }
Example #4
0
        private void SetDateInfo()
        {
            //RimWorld.DateReadout.DateOnGUI
            Vector2 location;

            if (WorldRendererUtility.WorldRenderedNow && Find.WorldSelector.selectedTile >= 0)
            {
                location = Find.WorldGrid.LongLatOf(Find.WorldSelector.selectedTile);
            }

            else if (WorldRendererUtility.WorldRenderedNow && Find.WorldSelector.NumSelectedObjects > 0)
            {
                location = Find.WorldGrid.LongLatOf(Find.WorldSelector.FirstSelectedObject.Tile);
            }

            else
            {
                if (Find.VisibleMap == null)
                {
                    return;
                }

                location = Find.WorldGrid.LongLatOf(Find.VisibleMap.Tile);
            }

            int gameTicks = Find.TickManager.gameStartAbsTick == 0 ? Find.TickManager.TicksGame : Find.TickManager.TicksAbs;             //Find.TickManager.TicksAbs errors if gameStartAbsTick is 0

            //RimWorld.GenDate.DateReadoutStringAt
            this.dateDayofSeason = GenDate.DayOfSeason(gameTicks, location.x) + 1;
            this.dateQuadrum     = GenDate.Quadrum(gameTicks, location.x);
            this.dateYear        = GenDate.Year(gameTicks, location.x);
        }
        public static int QuadrumInteger(long absTicks, float longitude)
        {
            Quadrum quadrum = GenDate.Quadrum(absTicks, longitude);

            if (quadrum == Quadrum.Aprimay)
            {
                return(1);
            }
            else if (quadrum == Quadrum.Jugust)
            {
                return(2);
            }
            else if (quadrum == Quadrum.Septober)
            {
                return(3);
            }
            else if (quadrum == Quadrum.Decembary)
            {
                return(4);
            }
            else
            {
                return(0);
            }
        }
        private void UpdateAbsoluteFieldsFromTicks(int ticksToUse)
        {
            var tileCoords = RemindersGameComponent.VectorForTime;

            if (!tileCoords.HasValue)
            {
                return;
            }
            var absTicks = GenDate.TickGameToAbs(ticksToUse);
            var coords   = tileCoords.Value;

            yearValue  = GenDate.Year(absTicks, coords.x);
            yearBuffer = yearValue.ToString();

            quadrumValue = GenDate.Quadrum(absTicks, coords.x);

            dayValue  = GenDate.DayOfQuadrum(absTicks, coords.x) + 1;
            dayBuffer = dayValue.ToString();

            hourValue  = GenDate.HourOfDay(absTicks, coords.x);
            hourBuffer = hourValue.ToString();

            Log.Debug($"Set defaults to {dayBuffer} {quadrumValue}, {yearBuffer} at {hourBuffer}.");
            Log.Debug($"Should have set to {GenDate.DateFullStringWithHourAt(absTicks, coords)}.");
        }
 private List <FloatMenuOption> MakeQuadrumOptions()
 {
     return(Enum.GetValues(typeof(Quadrum)).Cast <Quadrum>()
            .Where(q => q != Quadrum.Undefined)
            .Select(q => new FloatMenuOption(q.Label(), () => quadrumValue = q))
            .ToList());
 }
Example #8
0
        public static void PushState(Map map)
        {
            var world = Current.Game != null ? Current.Game.World : null;

            if (world == null)
            {
                RimRPC.prsnc.details = "Main Menu";
            }
            else
            {
                float latitude  = (map == null) ? 0f : Find.WorldGrid.LongLatOf(map.Tile).y;
                float longitude = (map == null) ? 0f : Find.WorldGrid.LongLatOf(map.Tile).x;
                colonyname     = GetColonyName();
                years          = days / 60;
                days           = GenDate.DaysPassed;
                dayhour        = GenDate.HourOfDay(Find.TickManager.TicksAbs, longitude);
                colonistnumber = (float)PawnsFinder.AllMapsCaravansAndTravelingTransportPods_Alive_FreeColonists.Count <Pawn>();
                //Season season = GenDate.Season(Find.TickManager.TicksAbs, latitude, longitude);
                //Quadrum updates seem enough.
                Quadrum quadrum = GenDate.Quadrum(Find.TickManager.TicksAbs, longitude);

                BiomeDef biome = Find.WorldGrid[map.uniqueID].biome;
                RimRPC.prsnc.state          = "Year " + years + " Day " + days + " (" + dayhour + "h) | " + quadrum;
                RimRPC.prsnc.details        = colonyname + ", " + colonistnumber + " Colonists";
                RimRPC.prsnc.largeImageText = "RimWorld";
                RimRPC.prsnc.smallImageKey  = "inmap";
                RimRPC.prsnc.smallImageText = "Playing!";
            }
            DiscordRPC.UpdatePresence(ref RimRPC.prsnc);
            //Log.Message("[RichPressence] Pushed presence update to RPC."); commented to remove log spam
        }
Example #9
0
        public static void PushState(Map map)
        {
            var world = Current.Game != null ? Current.Game.World : null;

            if (world == null)
            {
                RimRPC.prsnc.details = "Main Menu";
            }
            else
            {
                float latitude  = (map == null) ? 0f : Find.WorldGrid.LongLatOf(map.Tile).y;
                float longitude = (map == null) ? 0f : Find.WorldGrid.LongLatOf(map.Tile).x;
                colonyname     = GetColonyName();
                years          = days / 60;
                colonistnumber = (float)PawnsFinder.AllMapsCaravansAndTravelingTransportPods_Alive_FreeColonists.Count <Pawn>();
                days           = GenDate.DaysPassed;
                dayhour        = GenDate.HourOfDay(Find.TickManager.TicksAbs, longitude);
                quadrum        = GenDate.Quadrum(Find.TickManager.TicksAbs, longitude);

                BiomeDef biome = Find.WorldGrid[map.uniqueID].biome;
                RimRPC.prsnc.state          = BuildString("state");
                RimRPC.prsnc.details        = BuildString("details");
                RimRPC.prsnc.largeImageText = "RimWorld";
                RimRPC.prsnc.smallImageKey  = "inmap";
                RimRPC.prsnc.smallImageText = "Playing!";
                if (RWRPCMod.settings.RPC_Time)
                {
                    RimRPC.prsnc.startTimestamp = RimRPC.started;
                }
            }
            DiscordRPC.UpdatePresence(ref RimRPC.prsnc);
        }
 public MatteredDay(string name, Quadrum quadrum, int day, Duration duration)
 {
     Name         = name;
     Quadrum      = quadrum;
     DayOfQuadrum = day;
     Duration     = duration;
 }
Example #11
0
        public static void PushState(Map map)
        {
            var world = Current.Game != null ? Current.Game.World : null;

            if (world == null)
            {
                RimRPC.prsnc.details = "Main Menu";
            }
            else
            {
                float latitude  = (map == null) ? 0f : Find.WorldGrid.LongLatOf(map.Tile).y;
                float longitude = (map == null) ? 0f : Find.WorldGrid.LongLatOf(map.Tile).x;
                colonyname = GetColonyName();
                days       = GenDate.DaysPassed;
                dayhour    = GenDate.HourOfDay(Find.TickManager.TicksAbs, longitude);
                //Season season = GenDate.Season(Find.TickManager.TicksAbs, latitude, longitude);
                //Quadrum updates seem enough.
                Quadrum quadrum = GenDate.Quadrum(Find.TickManager.TicksAbs, longitude);

                BiomeDef biome = Find.WorldGrid[map.uniqueID].biome;
                RimRPC.prsnc.state          = "Day " + days + " (" + dayhour + "h) | " + quadrum;
                RimRPC.prsnc.details        = colonyname;
                RimRPC.prsnc.largeImageText = "RimWorld";
                RimRPC.prsnc.smallImageKey  = "inmap";
                RimRPC.prsnc.smallImageText = "Playing!";
            }
            DiscordRPC.UpdatePresence(ref RimRPC.prsnc);
            Log.Message("[RichPressence] Pushed presence update to RPC.");
        }
        private void DrawRowWithFixedDate(Rect rect, ref Vector2 cur, string name, Quadrum quadrum, int day, Duration duration, Action action)
        {
            Widgets.DrawHighlightIfMouseover(rect);
            GUI.color = new Color(1f, 1f, 1f, 0.2f);
            Widgets.DrawLineHorizontal(0f, cur.y, rect.width);
            GUI.color = Color.white;

            GUI.BeginGroup(rect);

            Rect rectName = rect.AtZero();

            rectName.width -= COL_MARGIN * 4 + BTN_SEASON_WIDTH + LBL_DATE_WIDTH + BTN_DURATION_WIDTH + BTN_DELETE_WIDTH;
            rectName.xMin  += COL_MARGIN;

            Rect rectSeason   = new Rect(rectName.xMax + COL_MARGIN, 2f, BTN_SEASON_WIDTH, rect.height - 4f);
            Rect rectDate     = new Rect(rectSeason.xMax + COL_MARGIN, 0f, LBL_DATE_WIDTH, rect.height);
            Rect rectDuration = new Rect(rectDate.xMax + COL_MARGIN, 2f, BTN_DURATION_WIDTH, rect.height - 4f);

            Text.Anchor = TextAnchor.MiddleLeft;
            Widgets.Label(rectName, name);
            Text.Anchor = TextAnchor.MiddleCenter;
            Widgets.Label(rectSeason, quadrum.Label());
            Widgets.Label(rectDate, day.ToString());
            Text.Anchor = TextAnchor.UpperLeft;

            if (Widgets.ButtonText(rectDuration, duration.Label()))
            {
                action();
            }

            GUI.EndGroup();
            cur.y += ROW_HEIGHT;
        }
 static DateReadout()
 {
     DateReadout.dateStringDay     = -1;
     DateReadout.dateStringSeason  = Season.Undefined;
     DateReadout.dateStringQuadrum = Quadrum.Undefined;
     DateReadout.dateStringYear    = -1;
     DateReadout.fastHourStrings   = new List <string>();
     DateReadout.Reset();
 }
Example #14
0
 static DateReadoutAdvanced()
 {
     dateStringDay     = -1;
     dateStringSeason  = Season.Undefined;
     dateStringQuadrum = Quadrum.Undefined;
     dateStringYear    = -1;
     fastHourStrings   = new List <string>();
     Reset();
 }
 public static Twelfth GetFirstTwelfth(this Quadrum quadrum)
 {
     return(quadrum switch
     {
         Quadrum.Aprimay => Twelfth.First,
         Quadrum.Jugust => Twelfth.Fourth,
         Quadrum.Septober => Twelfth.Seventh,
         Quadrum.Decembary => Twelfth.Tenth,
         _ => Twelfth.Undefined,
     });
Example #16
0
            public static void FixQuadrum(ref Quadrum __result, long absTicks, float longitude)
            {
                var offset = (absTicks / 2500f / 24f / 15f) % 4;

                if (offset < 0)
                {
                    offset = (offset + 4) % 4;
                }
                __result = (Quadrum)Mathf.FloorToInt(offset);
            }
Example #17
0
        public static int DateToTicks(int quadrumDay, Quadrum quadrum, int year)
        {
            if (quadrumDay >= GenDate.DaysPerQuadrum)
            {
                Log.Error($"[PrepareLanding] Called DateToTicks with wrong quadrumDay: {quadrumDay}.");
                return(0);
            }

            var numDays = (int)quadrum * GenDate.DaysPerQuadrum + quadrumDay;

            return(DateToTicks(numDays, year));
        }
 public static void Reset()
 {
     DateReadout.dateString        = null;
     DateReadout.dateStringDay     = -1;
     DateReadout.dateStringSeason  = Season.Undefined;
     DateReadout.dateStringQuadrum = Quadrum.Undefined;
     DateReadout.dateStringYear    = -1;
     DateReadout.fastHourStrings.Clear();
     for (int i = 0; i < 24; i++)
     {
         DateReadout.fastHourStrings.Add(i + "LetterHour".Translate());
     }
 }
        public void setDiseaseBySeason(Season season, Quadrum quadrum)
        {
            List <BiomeDiseaseRecord> seasonalDiseases = new List <BiomeDiseaseRecord>();

            if (Season.Spring == season && this.springDiseases != null)
            {
                seasonalDiseases = this.springDiseases;
            }
            else if (Season.Summer == season && this.summerDiseases != null)
            {
                seasonalDiseases = this.summerDiseases;
            }
            else if (Season.Fall == season && this.fallDiseases != null)
            {
                seasonalDiseases = this.fallDiseases;
            }
            else if (Season.Winter == season && this.winterDiseases != null)
            {
                seasonalDiseases = this.winterDiseases;
            }
            else
            {
                if (Quadrum.Aprimay == quadrum && this.springDiseases != null)
                {
                    seasonalDiseases = this.springDiseases;
                }
                else if (Quadrum.Decembary == quadrum && this.winterDiseases != null)
                {
                    seasonalDiseases = this.winterDiseases;
                }
                else if (Quadrum.Jugust == quadrum && this.summerDiseases != null)
                {
                    seasonalDiseases = this.summerDiseases;
                }
                else if (Quadrum.Septober == quadrum && this.fallDiseases != null)
                {
                    seasonalDiseases = this.fallDiseases;
                }
            }

            for (int i = 0; i < seasonalDiseases.Count; i++)
            {
                BiomeDiseaseRecord diseaseRec = seasonalDiseases[i];
                IncidentDef        disease    = diseaseRec.diseaseInc;
                disease.baseChance = diseaseRec.commonality;
            }
            diseaseCacheUpdated = false;
        }
Example #20
0
        public static int DateToGameTicksOffsetAgnostic(int year, Quadrum quadrum, int day, int hour, int offsetHours)
        {
            var yearDiff  = year - GenDate.DefaultStartingYear;
            var yearTicks = yearDiff * GenDate.TicksPerYear;

            var quadrumTicks = (int)quadrum * GenDate.TicksPerQuadrum;

            // day is 1-15, map to 0-14
            var dayTicks = (day - 1) * GenDate.TicksPerDay;

            var hourTicks = hour * GenDate.TicksPerHour;

            var offsetTicks = offsetHours * GenDate.TicksPerHour;

            return(GenDate.TickAbsToGame(yearTicks + quadrumTicks + dayTicks + hourTicks - offsetTicks));
        }
        public void setIncidentsBySeason(Season season, Quadrum quadrum)
        {
            List <TKKN_IncidentCommonalityRecord> seasonalIncidents = new List <TKKN_IncidentCommonalityRecord>();

            if (Season.Spring == season && this.springEvents != null)
            {
                seasonalIncidents = this.springEvents;
            }
            else if (Season.Summer == season && this.summerEvents != null)
            {
                seasonalIncidents = this.summerEvents;
            }
            else if (Season.Fall == season && this.fallEvents != null)
            {
                seasonalIncidents = this.fallEvents;
            }
            else if (Season.Winter == season && this.winterEvents != null)
            {
                seasonalIncidents = this.winterEvents;
            }
            else
            {
                if (Quadrum.Aprimay == quadrum && this.springEvents != null)
                {
                    seasonalIncidents = this.springEvents;
                }
                else if (Quadrum.Decembary == quadrum && this.winterEvents != null)
                {
                    seasonalIncidents = this.winterEvents;
                }
                else if (Quadrum.Jugust == quadrum && this.summerEvents != null)
                {
                    seasonalIncidents = this.summerEvents;
                }
                else if (Quadrum.Septober == quadrum && this.fallEvents != null)
                {
                    seasonalIncidents = this.fallEvents;
                }
            }

            for (int i = 0; i < seasonalIncidents.Count; i++)
            {
                TKKN_IncidentCommonalityRecord incidentRate = seasonalIncidents[i];
                IncidentDef incident = incidentRate.incident;
                incident.baseChance = incidentRate.commonality;
            }
        }
        private void DrawRowAdd(Rect rect, Action postAddAction)
        {
            GUI.BeginGroup(rect);

            Rect rectName = rect.AtZero();

            rectName.width -= COL_MARGIN * 4 + BTN_SEASON_WIDTH + LBL_DATE_WIDTH + BTN_DURATION_WIDTH + BTN_ADD_WIDTH;
            rectName.xMin  += COL_MARGIN;

            Rect rectSeason   = new Rect(rectName.xMax + COL_MARGIN, 0f, BTN_SEASON_WIDTH, rect.height);
            Rect rectDate     = new Rect(rectSeason.xMax + COL_MARGIN, 0f, LBL_DATE_WIDTH, rect.height);
            Rect rectDuration = new Rect(rectDate.xMax + COL_MARGIN, 0f, BTN_DURATION_WIDTH, rect.height);
            Rect btnAddRect   = new Rect(rectDuration.xMax + COL_MARGIN, 0f, BTN_ADD_WIDTH, rect.height);

            _newEventName = Widgets.TextField(rectName, _newEventName);
            Widgets.TextFieldNumeric(rectDate, ref _newEventDay, ref _newEventDateBuffer, 1, 15);

            if (Widgets.ButtonText(rectSeason, _newEventQuadrum.Label()))
            {
                FloatMenuUtility.MakeMenu(QUADRUMS, quadrum => quadrum.Label(), quadrum => delegate
                {
                    _newEventQuadrum = quadrum;
                });
            }

            if (Widgets.ButtonText(rectDuration, _newEventDuration.Label()))
            {
                FloatMenuUtility.MakeMenu(Enum.GetValues(typeof(Duration)).Cast <Duration>(), duration => duration.Label(), duration => delegate
                {
                    _newEventDuration = duration;
                });
            }

            if (Widgets.ButtonText(btnAddRect, "DM.Tab.AddCustomDay".Translate()))
            {
                if (_newEventName == "")
                {
                    _newEventName = "DM.Tab.CustomDayDefaultName".Translate();
                }
                _store.MatteredDays.Add(new MatteredDay(_newEventName, _newEventQuadrum, _newEventDay, _newEventDuration));
                _newEventName = "";
                SoundDefOf.Click.PlayOneShotOnCamera();
                postAddAction();
            }

            GUI.EndGroup();
        }
Example #23
0
            internal string <> m__0()
            {
                StringBuilder stringBuilder = new StringBuilder();

                for (int i = 0; i < 4; i++)
                {
                    Quadrum quadrum = (Quadrum)i;
                    stringBuilder.AppendLine(quadrum.Label() + " - " + quadrum.GetSeason(this.location.y).LabelCap());
                }
                return("DateReadoutTip".Translate(new object[]
                {
                    GenDate.DaysPassed,
                    15,
                    this.season.LabelCap(),
                    15,
                    GenDate.Quadrum((long)GenTicks.TicksAbs, this.location.x).Label(),
                    stringBuilder.ToString()
                }));
            }
Example #24
0
        private void updateBiomeSettings(bool force = false)
        {
            if (this.biomeSettings != null)
            {
                Vector2 location = Find.WorldGrid.LongLatOf(map.Tile);
                Season  season   = GenDate.Season((long)Find.TickManager.TicksAbs, location);
                Quadrum quadrum  = GenDate.Quadrum((long)Find.TickManager.TicksAbs, location.x);

                if (force == true || (biomeSettings.lastChanged != season && biomeSettings.lastChangedQ != quadrum))
                {
//					Log.Warning("Updating seasonal settings");
                    biomeSettings.setWeatherBySeason(map, season, quadrum);
                    biomeSettings.setDiseaseBySeason(season, quadrum);
                    biomeSettings.setIncidentsBySeason(season, quadrum);
                    biomeSettings.lastChanged  = season;
                    biomeSettings.lastChangedQ = quadrum;
                }
            }
        }
Example #25
0
        public static string Label(this Quadrum quadrum)
        {
            switch (quadrum)
            {
            case Quadrum.Aprimay:
                return("QuadrumAprimay".Translate());

            case Quadrum.Jugust:
                return("QuadrumJugust".Translate());

            case Quadrum.Septober:
                return("QuadrumSeptober".Translate());

            case Quadrum.Decembary:
                return("QuadrumDecembary".Translate());

            default:
                return("Unknown quadrum");
            }
        }
Example #26
0
        public static Twelfth GetMiddleTwelfth(this Quadrum quadrum)
        {
            switch (quadrum)
            {
            case Quadrum.Aprimay:
                return(Twelfth.Second);

            case Quadrum.Jugust:
                return(Twelfth.Fifth);

            case Quadrum.Septober:
                return(Twelfth.Eighth);

            case Quadrum.Decembary:
                return(Twelfth.Eleventh);

            default:
                return(Twelfth.Undefined);
            }
        }
Example #27
0
        public static Twelfth GetFirstTwelfth(this Quadrum quadrum)
        {
            switch (quadrum)
            {
            case Quadrum.Aprimay:
                return(Twelfth.First);

            case Quadrum.Jugust:
                return(Twelfth.Fourth);

            case Quadrum.Septober:
                return(Twelfth.Seventh);

            case Quadrum.Decembary:
                return(Twelfth.Tenth);

            default:
                return(Twelfth.Undefined);
            }
        }
Example #28
0
        public static void Reset()
        {
            dateString        = null;
            dateStringDay     = -1;
            dateStringSeason  = Season.Undefined;
            dateStringQuadrum = Quadrum.Undefined;
            dateStringYear    = -1;
            fastHourStrings.Clear();
            for (int i = 0; i < 24; i++)
            {
                fastHourStrings.Add(i + (string)"LetterHour".Translate());
            }
            seasonsCached.Clear();
            int length = Enum.GetValues(typeof(Season)).Length;

            for (int j = 0; j < length; j++)
            {
                Season season = (Season)j;
                seasonsCached.Add((season == Season.Undefined) ? "" : season.LabelCap());
            }
        }
 public void setWeatherBySeason(Map map, Season season, Quadrum quadrum)
 {
     if (Season.Spring == season)
     {
         map.Biome.baseWeatherCommonalities = this.springWeathers;
     }
     else if (Season.Summer == season)
     {
         map.Biome.baseWeatherCommonalities = this.summerWeathers;
     }
     else if (Season.Fall == season)
     {
         map.Biome.baseWeatherCommonalities = this.fallWeathers;
     }
     else if (Season.Winter == season)
     {
         map.Biome.baseWeatherCommonalities = this.winterWeathers;
     }
     else
     {
         if (Quadrum.Aprimay == quadrum)
         {
             map.Biome.baseWeatherCommonalities = this.springWeathers;
         }
         else if (Quadrum.Decembary == quadrum)
         {
             map.Biome.baseWeatherCommonalities = this.winterWeathers;
         }
         else if (Quadrum.Jugust == quadrum)
         {
             map.Biome.baseWeatherCommonalities = this.fallWeathers;
         }
         else if (Quadrum.Septober == quadrum)
         {
             map.Biome.baseWeatherCommonalities = this.summerWeathers;
         }
     }
     return;
 }
        public static void DateOnGUI(Rect dateRect)
        {
            Vector2 location;

            if (WorldRendererUtility.WorldRenderedNow && Find.WorldSelector.selectedTile >= 0)
            {
                location = Find.WorldGrid.LongLatOf(Find.WorldSelector.selectedTile);
            }
            else if (WorldRendererUtility.WorldRenderedNow && Find.WorldSelector.NumSelectedObjects > 0)
            {
                location = Find.WorldGrid.LongLatOf(Find.WorldSelector.FirstSelectedObject.Tile);
            }
            else
            {
                if (Find.VisibleMap == null)
                {
                    return;
                }
                location = Find.WorldGrid.LongLatOf(Find.VisibleMap.Tile);
            }
            int     index   = GenDate.HourInteger(Find.TickManager.TicksAbs, location.x);
            int     num     = GenDate.DayOfTwelfth(Find.TickManager.TicksAbs, location.x);
            Season  season  = GenDate.Season(Find.TickManager.TicksAbs, location);
            Quadrum quadrum = GenDate.Quadrum(Find.TickManager.TicksAbs, location.x);
            int     num2    = GenDate.Year(Find.TickManager.TicksAbs, location.x);
            string  text    = (!DateReadout.SeasonLabelVisible) ? string.Empty : season.LabelCap();

            if (num != DateReadout.dateStringDay || season != DateReadout.dateStringSeason || quadrum != DateReadout.dateStringQuadrum || num2 != DateReadout.dateStringYear)
            {
                DateReadout.dateString        = GenDate.DateReadoutStringAt(Find.TickManager.TicksAbs, location);
                DateReadout.dateStringDay     = num;
                DateReadout.dateStringSeason  = season;
                DateReadout.dateStringQuadrum = quadrum;
                DateReadout.dateStringYear    = num2;
            }
            Text.Font = GameFont.Small;
            Vector2 vector  = Text.CalcSize(DateReadout.fastHourStrings[index]);
            float   x       = vector.x;
            Vector2 vector2 = Text.CalcSize(DateReadout.dateString);
            float   a       = Mathf.Max(x, (float)(vector2.x + 7.0));
            Vector2 vector3 = Text.CalcSize(text);
            float   num3    = Mathf.Max(a, vector3.x);

            dateRect.xMin = dateRect.xMax - num3;
            if (Mouse.IsOver(dateRect))
            {
                Widgets.DrawHighlight(dateRect);
            }
            GUI.BeginGroup(dateRect);
            Text.Font   = GameFont.Small;
            Text.Anchor = TextAnchor.UpperRight;
            Rect rect = dateRect.AtZero();

            rect.xMax -= 7f;
            Widgets.Label(rect, DateReadout.fastHourStrings[index]);
            rect.yMin += 26f;
            Widgets.Label(rect, DateReadout.dateString);
            rect.yMin += 26f;
            if (!text.NullOrEmpty())
            {
                Widgets.Label(rect, text);
            }
            Text.Anchor = TextAnchor.UpperLeft;
            GUI.EndGroup();
            TooltipHandler.TipRegion(dateRect, new TipSignal(delegate
            {
                StringBuilder stringBuilder = new StringBuilder();
                for (int i = 0; i < 4; i++)
                {
                    Quadrum quadrum2 = (Quadrum)i;
                    stringBuilder.AppendLine(quadrum2.Label() + " - " + quadrum2.GetSeason(location.y).LabelCap());
                }
                return("DateReadoutTip".Translate(GenDate.DaysPassed, 15, season.LabelCap(), 15, GenDate.Quadrum(GenTicks.TicksAbs, location.x).Label(), stringBuilder.ToString()));
            }, 86423));
        }