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); }
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()); }
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 }
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; }
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(); }
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, });
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); }
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; }
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(); }
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() })); }
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; } } }
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"); } }
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); } }
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); } }
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)); }