private bool AdvanceTime() { IChronology chronoSystem = Template <IGaiaTemplate>().ChronologicalSystem; if (CurrentTimeOfDay.BaseChronology == null) { CurrentTimeOfDay.BaseChronology = chronoSystem; } CurrentTimeOfDay.AdvanceByHour(); if (CelestialPositions.Any(cp => cp.CelestialObject.OrientationType == CelestialOrientation.SolarBody)) { int rotationalChange = 360 / chronoSystem.HoursPerDay; PlanetaryRotation += rotationalChange; int maxOrbit = chronoSystem.Months.Count() * chronoSystem.DaysPerMonth * chronoSystem.HoursPerDay; int orbitalChange = 1 / maxOrbit; OrbitalPosition += orbitalChange; if (OrbitalPosition >= maxOrbit) { OrbitalPosition -= maxOrbit; } } Save(); return(true); }
public TimeOfDay(IChronology baseChronology) { Hour = 1; Day = 1; Month = 1; BaseChronology = baseChronology; Year = BaseChronology.StartingYear; }