1 export type TimeDay = 'dawn' | 'morning' | 'afternoon';
2 export type TimeNight = 'evening' | 'night';
3 export type TimePeriod = TimeDay | TimeNight | 'any';
5 export class TimeManager {
10 * @param dayLength the number of minutes a day lasts
12 constructor(public dayLength: number = 60) {
13 this.scaleFactor = 30; // this is because we only have 30 gradients
14 this.dayLengthAsMS = dayLength * 60 * 1000;
17 dayScaleFactor(): number {
18 return this.dayLength / 30;
21 getTimePeriod(): TimePeriod {
25 else if(this.isMorning()) {
28 else if(this.isAfternoon()) {
31 else if(this.isEvening()) {
34 else if(this.isNight()) {
39 * @returns The current minutes scaled
42 return Math.floor((new Date()).getMinutes() / this.dayScaleFactor());
45 gradientName(): string {
46 const num = this.now();
47 return `sky-gradient-${num < 10 ? '0': ''}${num}`;
51 const min = this.now();
53 min >= 0 && min <= 5 ||
54 min >= 26 && min <= 29
59 const min = this.now();
60 return min >= 6 && min <= 10;
63 isMorning(): boolean {
64 const min = this.now();
65 return min >= 11 && min <= 15;
68 isAfternoon(): boolean {
69 const min = this.now();
70 return min >= 16 && min <= 20;
73 isEvening(): boolean {
74 const min = this.now();
75 return min >= 21 && min <= 25;