private static void SetUpHolidayManager(Season currentSeason, bool clear) { HolidayManager ths = HolidayManager.sInstance; if (ths == null) { return; } if (SeasonsManager.sInstance == null) { return; } if (clear) { ths.ClearCurrentHoliday(); } if (SeasonsManager.GetSeasonEnabled(currentSeason)) { if (ths.mStartDateTimeOfHoliday == DateAndTime.Invalid) { ths.OnHolidayDone(); CalculateDateTimeOfHoliday(ths, ref currentSeason); if (ths.mStartDateTimeOfHoliday != DateAndTime.Invalid) { ths.mCurrentSeason = currentSeason; ths.SetHoliday(); } if (TrickOrTreatSituation.NPCTrickOrTreatAlarm != AlarmHandle.kInvalidHandle) { AlarmManager.Global.RemoveAlarm(TrickOrTreatSituation.NPCTrickOrTreatAlarm); TrickOrTreatSituation.NPCTrickOrTreatAlarm = AlarmHandle.kInvalidHandle; } } if (ths.mStartDateTimeOfHoliday != DateAndTime.Invalid) { DateAndTime time = SimClock.CurrentTime(); long ticks = (ths.mStartDateTimeOfHoliday - time).Ticks; Common.DebugNotify("Initiate Holiday Alarm: " + Common.NewLine + SimClock.CurrentTime() + Common.NewLine + ths.mStartDateTimeOfHoliday + Common.NewLine + ticks); if (ticks > 0) { ths.ClearAllAlarms(); //ths.StartAlarms(); if (sHolidayAlarm != null) { sHolidayAlarm.Dispose(); } sHolidayAlarm = new Common.AlarmTask(SimClock.ConvertFromTicks(ticks, TimeUnit.Hours), TimeUnit.Hours, OnHolidayStarted); long ticksToWarning = ticks - SimClock.ConvertToTicks((float)HolidayManager.kDaysBeforeHolidayToShowWarningTNS, TimeUnit.Days); if (ticksToWarning > 0) { ths.mShowWarningAlarm = AlarmManager.Global.AddAlarm(SimClock.ConvertFromTicks(ticksToWarning, TimeUnit.Hours), TimeUnit.Hours, ths.OnShowWarningTns, "ShowWarningTns", AlarmType.AlwaysPersisted, null); } } } } }