IEnumerator TimeRoutine() { while (Hour < MaxHour) { if (timeScale == 0f) { yield return(new WaitForTimeUnpaused()); } var timeStep = 1f / (TimeSpeed * timeScale); yield return(new WaitForTimeElapsed(timeStep)); Minute += 1; MinuteTicked?.Invoke(this, new TimeEventArgs(Minute, Hour, Year)); var hourChanged = Minute >= 60; Hour += hourChanged ? 1 : 0; Minute %= 60; if (hourChanged) { if (Hour >= MorningHour && Hour <= EveningHour) { WorkingHourTicked?.Invoke(this, new TimeEventArgs(Minute, Hour, Year)); } } TimeChanged?.Invoke(this, new TimeEventArgs(Minute, Hour, Year)); if (Hour == MorningHour && Minute == 0) { Morning?.Invoke(this, EventArgs.Empty); } if (Hour == EveningHour && Minute == 0) { Evening?.Invoke(this, EventArgs.Empty); } } Year += 1; Hour = MinHour; Minute = 0; TimeChanged?.Invoke(this, new TimeEventArgs(Minute, Hour, Year)); YearTicked?.Invoke(this, new TimeEventArgs(Minute, Hour, Year)); StopTime(); }
void Start() { Initialized?.Invoke(this, new InitializedEventArgs()); StartTime(); YearTicked?.Invoke(this, new TimeEventArgs(Minute, Hour, Year)); }