SimAINet/src/SimAI/VMClock.cs
2020-04-15 21:41:30 -04:00

46 lines
No EOL
1.3 KiB
C#

// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
// If a copy of the MPL was not distributed with this file, You can obtain one at
// http://mozilla.org/MPL/2.0/.
using System;
namespace SimAI
{
public class VMClock
{
public long Ticks { get; set; }
public int MinuteFractions { get; set; }
public int TicksPerMinute { get; set; }
public int Minutes { get; set; }
public int Hours { get; set; }
public int DayOfMonth = 1;
public int Month = 6;
public int Year = 1997;
public int FirePercent { get; set; }
public long UTCStart = DateTime.UtcNow.Ticks;
public int TimeOfDay => (Hours >= 6 && Hours < 18) ? 0 : 1;
public int Seconds => MinuteFractions * 60 / TicksPerMinute;
public DateTime UTCNow => new DateTime(UTCStart).AddSeconds(Ticks / 30.0);
public VMClock() {}
public void Tick()
{
if (FirePercent < 2000) FirePercent++;
if (++MinuteFractions < TicksPerMinute) return;
MinuteFractions = 0;
if (++Minutes < 60) return;
Minutes = 0;
if (++DayOfMonth <= 30) return;
DayOfMonth = 1;
if (++Month <= 12) return;
Month = 1;
Year++;
Ticks++;
}
}
}