private void DoRecurring(Rect rect) { Widgets.CheckboxLabeled(rect, I18n.Translate("EditReminder.Recur"), ref recur); if (recur) { var timeInputRect = rect; timeInputRect.y = rect.yMax + 5; timeInputRect.height = 30; FWidgets.Label(timeInputRect, I18n.Translate("EditReminder.RecurEvery"), anchor: TextAnchor.MiddleLeft); var dayRect = timeInputRect; dayRect.x += 120f; dayRect.width = 60f; Widgets.TextFieldNumeric(dayRect, ref recurEveryDays, ref recurEveryDaysBuffer); var dayLabelRect = dayRect; dayLabelRect.x = dayRect.xMax + 4f; FWidgets.Label(dayLabelRect, I18n.Translate("EditReminder.DaysAnd"), anchor: TextAnchor.MiddleCenter); var hourRect = dayLabelRect; hourRect.x = dayLabelRect.xMax + 4f; hourRect.width = 30f; Widgets.TextFieldNumeric(hourRect, ref recurEveryHours, ref recurEveryHoursBuffer, 0, 23); var hourLabelRect = hourRect; hourLabelRect.x = hourRect.xMax + 4f; hourLabelRect.width = 60f; FWidgets.Label(hourLabelRect, I18n.Translate("EditReminder.Hours"), anchor: TextAnchor.MiddleLeft); } }
private void DoRelativeTime(Rect rect) { FWidgets.Label(rect, I18n.Translate("EditReminder.FireIn"), anchor: TextAnchor.MiddleLeft); var dayRect = rect; dayRect.x += 60f; dayRect.width = 60f; Widgets.TextFieldNumeric(dayRect, ref daysFromNowValue, ref daysFromNowBuffer); var dayLabelRect = dayRect; dayLabelRect.x = dayRect.xMax + 4f; FWidgets.Label(dayLabelRect, I18n.Translate("EditReminder.DaysAnd"), anchor: TextAnchor.MiddleCenter); var hourRect = dayLabelRect; hourRect.x = dayLabelRect.xMax + 4f; hourRect.width = 30f; Widgets.TextFieldNumeric(hourRect, ref hoursFromNowValue, ref hoursFromNowBuffer, 0, 23); var hourLabelRect = hourRect; hourLabelRect.x = hourRect.xMax + 4f; hourLabelRect.width = 60f; FWidgets.Label(hourLabelRect, I18n.Translate("EditReminder.Hours"), anchor: TextAnchor.MiddleLeft); fireOnTick = DateHelper.RelativeTimeToGameTicks(daysFromNowValue, hoursFromNowValue); }
private void DoTime(Rect rect) { var labelRect = rect; labelRect.height = 25; Widgets.Label(labelRect, I18n.Translate("EditReminder.ReminderTime")); var radioRect = labelRect; radioRect.y = labelRect.yMax; radioRect.height = 30; radioRect.width = 24f + 20f + absTextLength; if (FWidgets.RadioButtonLabeled(radioRect, I18n.Translate(TimeRepresentation.Absolute.ToString()), selectedTimeRep == TimeRepresentation.Absolute)) { if (selectedTimeRep != TimeRepresentation.Absolute && fireOnTick != 0) { UpdateAbsoluteFieldsFromTicks(fireOnTick); } selectedTimeRep = TimeRepresentation.Absolute; } radioRect.x = radioRect.xMax + 20f; radioRect.width = 24f + 20f + relTextLength; if (FWidgets.RadioButtonLabeled(radioRect, I18n.Translate(TimeRepresentation.Relative.ToString()), selectedTimeRep == TimeRepresentation.Relative)) { if (selectedTimeRep != TimeRepresentation.Relative && fireOnTick != 0) { UpdateRelativeFieldsFromTicks(fireOnTick); } selectedTimeRep = TimeRepresentation.Relative; } radioRect.x = radioRect.xMax + 20f; radioRect.width = 100f; bool nextLoadRadioSelected = FWidgets.RadioButtonLabeled(radioRect, I18n.Translate("Reminder.NextLoad"), selectedTimeRep == TimeRepresentation.NextLoad); if (nextLoadRadioSelected) { selectedTimeRep = TimeRepresentation.NextLoad; } nextLoad = selectedTimeRep == TimeRepresentation.NextLoad; var timeInputRect = new Rect(labelRect.x, radioRect.yMax + 5, rect.width, 30f); switch (selectedTimeRep) { case TimeRepresentation.Absolute: DoAbsoluteTime(timeInputRect); break; case TimeRepresentation.Relative: DoRelativeTime(timeInputRect); break; } }
private void DoAbsoluteTime(Rect rect) { FWidgets.Label(rect, I18n.Translate("EditReminder.FireOn"), anchor: TextAnchor.MiddleLeft); var dayRect = rect; dayRect.x = rect.x + 60f; dayRect.width = 30f; Widgets.TextFieldNumeric(dayRect, ref dayValue, ref dayBuffer, 1, 15); var ofRect = dayRect; ofRect.x = dayRect.xMax + 4f; ofRect.width = 15f; FWidgets.Label(ofRect, I18n.Translate("Of"), anchor: TextAnchor.MiddleCenter); var quadrumRect = ofRect; quadrumRect.x = ofRect.xMax + 4f; quadrumRect.width = 100f; var pressed = Widgets.ButtonText(quadrumRect, quadrumValue.Label()); if (pressed) { Find.WindowStack.Add(new FloatMenu(MakeQuadrumOptions())); } var commaRect = ofRect; commaRect.x = quadrumRect.xMax + 2f; commaRect.width = 5f; FWidgets.Label(commaRect, ",", anchor: TextAnchor.MiddleCenter); var yearRect = commaRect; yearRect.x = commaRect.xMax + 4f; yearRect.width = 60f; Widgets.TextFieldNumeric(yearRect, ref yearValue, ref yearBuffer); var atRect = commaRect; atRect.x = yearRect.xMax + 4f; atRect.width = 15f; FWidgets.Label(atRect, I18n.Translate("At"), anchor: TextAnchor.MiddleCenter); var hourRect = atRect; hourRect.x = atRect.xMax + 4f; hourRect.width = 30f; Widgets.TextFieldNumeric(hourRect, ref hourValue, ref hourBuffer, 0, 23); var offsetHours = RemindersGameComponent.VectorForTime.HasValue ? GenDate.TimeZoneAt(RemindersGameComponent.VectorForTime.Value.x) : 0; int dateToTicks = DateHelper.DateToGameTicksOffsetAgnostic(yearValue, quadrumValue, dayValue, hourValue, offsetHours); fireOnTick = dateToTicks; }
public override void DoWindowContents(Rect inRect) { FWidgets.Label(inRect, I18n.Translate("EditReminder.Title"), font: GameFont.Medium); inRect.yMin += 40; var selectRect = inRect; selectRect.height = 60; DoLetterDefSelection(selectRect); var titleRect = selectRect; titleRect.y = selectRect.yMax + 15; titleRect.height = 55; DoTitle(titleRect); var bodyRect = titleRect; bodyRect.y = titleRect.yMax + 15; bodyRect.height = 85; DoBody(bodyRect); var timeRect = bodyRect; timeRect.y = bodyRect.yMax + 15; DoTime(timeRect); if (selectedTimeRep != TimeRepresentation.NextLoad) { var recurRect = timeRect; recurRect.y = timeRect.yMax + 15; recurRect.height = 30; DoRecurring(recurRect); } else { recur = false; } var buttonsRect = inRect; buttonsRect.yMin = inRect.yMax - 50; buttonsRect.xMin = inRect.xMax - 210; // 100 per button * 2, + 10 margin DoButtons(buttonsRect); }