Skip to content

Commit

Permalink
Renamed internal methods
Browse files Browse the repository at this point in the history
  • Loading branch information
Marco De Salvo committed Jan 20, 2025
1 parent 86118bd commit 5a7427f
Showing 1 changed file with 36 additions and 36 deletions.
72 changes: 36 additions & 36 deletions OWLSharp/Extensions/TIME/Abstractions/TIMEConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ public static TIMECoordinate CoordinateFromPosition(double timePosition, TIMEPos

//Execute the clock emulator on the transformed time position
if (scaledTimePositionSeconds > 0)
ClockForwardToCoordinate(scaledTimePositionSeconds, coordinate, calendarTRS);
TickForward(scaledTimePositionSeconds, coordinate, calendarTRS);
else if (scaledTimePositionSeconds < 0)
ClockBackwardFromCoordinate(scaledTimePositionSeconds, coordinate, calendarTRS);
TickBackward(scaledTimePositionSeconds, coordinate, calendarTRS);
}
#endregion

Expand Down Expand Up @@ -291,80 +291,80 @@ public static TIMEExtent ExtentBetweenCoordinates(TIMECoordinate timeCoordinateS
#endregion

#region Utilities
internal static void ClockForwardToCoordinate(double secondsToConsume, TIMECoordinate positionTRSOrigin, TIMECalendarReferenceSystem calendarTRS)
internal static void TickForward(double secondsToConsume, TIMECoordinate timeCoordinate, TIMECalendarReferenceSystem calendarTRS)
{
uint[] metricsMonths = calendarTRS.Metrics.LeapYearRule?.Invoke(positionTRSOrigin.Year ?? 0)
uint[] metricsMonths = calendarTRS.Metrics.LeapYearRule?.Invoke(timeCoordinate.Year ?? 0)
?? calendarTRS.Metrics.Months;
while (secondsToConsume >= calendarTRS.Metrics.SecondsInMinute)
{
secondsToConsume -= calendarTRS.Metrics.SecondsInMinute;
positionTRSOrigin.Minute++;
if (positionTRSOrigin.Minute < calendarTRS.Metrics.MinutesInHour)
timeCoordinate.Minute++;
if (timeCoordinate.Minute < calendarTRS.Metrics.MinutesInHour)
continue;

//Minute overflow => propagate to hour
positionTRSOrigin.Minute = 0;
positionTRSOrigin.Hour++;
if (positionTRSOrigin.Hour < calendarTRS.Metrics.HoursInDay)
timeCoordinate.Minute = 0;
timeCoordinate.Hour++;
if (timeCoordinate.Hour < calendarTRS.Metrics.HoursInDay)
continue;

//Hour overflow => propagate to day
positionTRSOrigin.Hour = 0;
positionTRSOrigin.Day++;
if (positionTRSOrigin.Day <= metricsMonths[Convert.ToInt32(positionTRSOrigin.Month)-1])
timeCoordinate.Hour = 0;
timeCoordinate.Day++;
if (timeCoordinate.Day <= metricsMonths[Convert.ToInt32(timeCoordinate.Month)-1])
continue;

//Day overflow => propagate to month
positionTRSOrigin.Day = 1;
positionTRSOrigin.Month++;
if (positionTRSOrigin.Month <= calendarTRS.Metrics.MonthsInYear)
timeCoordinate.Day = 1;
timeCoordinate.Month++;
if (timeCoordinate.Month <= calendarTRS.Metrics.MonthsInYear)
continue;

//Month overflow => propagate to year, fetch new metrics
positionTRSOrigin.Month = 1;
positionTRSOrigin.Year++;
metricsMonths = calendarTRS.Metrics.LeapYearRule?.Invoke(positionTRSOrigin.Year ?? 0)
timeCoordinate.Month = 1;
timeCoordinate.Year++;
metricsMonths = calendarTRS.Metrics.LeapYearRule?.Invoke(timeCoordinate.Year ?? 0)
?? calendarTRS.Metrics.Months;
}
positionTRSOrigin.Second = Math.Truncate(positionTRSOrigin.Second.Value + secondsToConsume);
timeCoordinate.Second = Math.Truncate(timeCoordinate.Second.Value + secondsToConsume);
}

internal static void ClockBackwardFromCoordinate(double secondsToConsume, TIMECoordinate positionTRSOrigin, TIMECalendarReferenceSystem calendarTRS)
internal static void TickBackward(double secondsToConsume, TIMECoordinate timeCoordinate, TIMECalendarReferenceSystem calendarTRS)
{
uint[] metricsMonths = calendarTRS.Metrics.LeapYearRule?.Invoke(positionTRSOrigin.Year ?? 0)
uint[] metricsMonths = calendarTRS.Metrics.LeapYearRule?.Invoke(timeCoordinate.Year ?? 0)
?? calendarTRS.Metrics.Months;
while (secondsToConsume < 0)
{
secondsToConsume += calendarTRS.Metrics.SecondsInMinute;
positionTRSOrigin.Minute--;
if (positionTRSOrigin.Minute >= 0)
timeCoordinate.Minute--;
if (timeCoordinate.Minute >= 0)
continue;

//Minute underflow => propagate to hour
positionTRSOrigin.Minute = calendarTRS.Metrics.MinutesInHour - 1;
positionTRSOrigin.Hour--;
if (positionTRSOrigin.Hour >= 0)
timeCoordinate.Minute = calendarTRS.Metrics.MinutesInHour - 1;
timeCoordinate.Hour--;
if (timeCoordinate.Hour >= 0)
continue;

//Hour underflow => propagate to day
positionTRSOrigin.Hour = calendarTRS.Metrics.HoursInDay - 1;
positionTRSOrigin.Day--;
if (positionTRSOrigin.Day >= 1)
timeCoordinate.Hour = calendarTRS.Metrics.HoursInDay - 1;
timeCoordinate.Day--;
if (timeCoordinate.Day >= 1)
continue;

//Day underflow => propagate to month
positionTRSOrigin.Month--;
if (positionTRSOrigin.Month == 0)
timeCoordinate.Month--;
if (timeCoordinate.Month == 0)
{
//Month underflow => propagate to year, fetch new metrics
positionTRSOrigin.Month = calendarTRS.Metrics.MonthsInYear;
positionTRSOrigin.Year--;
metricsMonths = calendarTRS.Metrics.LeapYearRule?.Invoke(positionTRSOrigin.Year ?? 0)
timeCoordinate.Month = calendarTRS.Metrics.MonthsInYear;
timeCoordinate.Year--;
metricsMonths = calendarTRS.Metrics.LeapYearRule?.Invoke(timeCoordinate.Year ?? 0)
?? calendarTRS.Metrics.Months;
}
positionTRSOrigin.Day = metricsMonths[Convert.ToInt32(positionTRSOrigin.Month)-1];
timeCoordinate.Day = metricsMonths[Convert.ToInt32(timeCoordinate.Month)-1];
}
positionTRSOrigin.Second = Math.Truncate(positionTRSOrigin.Second.Value + secondsToConsume);
timeCoordinate.Second = Math.Truncate(timeCoordinate.Second.Value + secondsToConsume);
}
#endregion
}
Expand Down

0 comments on commit 5a7427f

Please sign in to comment.