Exemple #1
0
        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);
                        }
                    }
                }
            }
        }