Пример #1
0
        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);
        }
Пример #2
0
        public TimeOfDay(IChronology baseChronology)
        {
            Hour  = 1;
            Day   = 1;
            Month = 1;

            BaseChronology = baseChronology;

            Year = BaseChronology.StartingYear;
        }