Exemple #1
0
        public DndDailyAlarm CreateDailyAlarm(string name, int hours, int minutes = 0, int seconds = 0, Creature creature = null, object data = null)
        {
            DndDailyAlarm dndAlarm = new DndDailyAlarm(this, new DateTime(Time.Year, Time.Month, Time.Day, hours, minutes, seconds), name, creature, data);

            dailyAlarms.Add(dndAlarm);
            dailyAlarms.Sort((x, y) => x.TriggerTime.CompareTo(y.TriggerTime));
            return(dndAlarm);
        }
Exemple #2
0
        void TriggerAlarms(DateTime futureTime, int currentTurnIndex, Character player = null, TurnSpecifier turnSpecifier = TurnSpecifier.None)
        {
            triggeringAlarms = true;
            try
            {
                for (int i = 0; i < alarms.Count; i++)
                {
                    DndAlarm alarm = alarms[i];
                    if (alarm.TriggerTime > futureTime)
                    {
                        break;
                    }

                    if (futureTime - alarm.TriggerTime < TimeSpan.FromSeconds(6))
                    {
                        if (alarm.TurnIndex >= 0 && alarm.TurnIndex > currentTurnIndex)
                        {
                            break;
                        }
                    }

                    TriggerAlarm(alarm, player, turnSpecifier);
                }

                for (int i = 0; i < dailyAlarms.Count; i++)
                {
                    DndDailyAlarm dailyAlarm  = dailyAlarms[i];
                    int           daysFromNow = (futureTime - dailyAlarm.TriggerTime).Days;
                    if (daysFromNow != 0)
                    {
                        dailyAlarm.TriggerTime = dailyAlarm.TriggerTime.AddDays(daysFromNow);
                    }
                    if (dailyAlarm.TriggerTime > futureTime || dailyAlarm.DayOfYearLastTriggered == dailyAlarm.TriggerTime.DayOfYear)
                    {
                        break;
                    }
                    dailyAlarm.DayOfYearLastTriggered = dailyAlarm.TriggerTime.DayOfYear;
                    TriggerAlarm(dailyAlarm);
                }
            }
            finally
            {
                triggeringAlarms = false;
            }

            RemoveExpiredAlarms();
        }
Exemple #3
0
        void TriggerAlarms(DateTime futureTime)
        {
            triggeringAlarms = true;
            try
            {
                for (int i = 0; i < alarms.Count; i++)
                {
                    DndAlarm alarm = alarms[i];
                    if (alarm.TriggerTime > futureTime)
                    {
                        break;
                    }

                    TriggerAlarm(alarm);
                }

                for (int i = 0; i < dailyAlarms.Count; i++)
                {
                    DndDailyAlarm dailyAlarm  = dailyAlarms[i];
                    int           daysFromNow = (futureTime - dailyAlarm.TriggerTime).Days;
                    if (daysFromNow != 0)
                    {
                        dailyAlarm.TriggerTime = dailyAlarm.TriggerTime.AddDays(daysFromNow);
                    }
                    if (dailyAlarm.TriggerTime > futureTime || dailyAlarm.DayOfYearLastTriggered == dailyAlarm.TriggerTime.DayOfYear)
                    {
                        break;
                    }
                    dailyAlarm.DayOfYearLastTriggered = dailyAlarm.TriggerTime.DayOfYear;
                    TriggerAlarm(dailyAlarm);
                }
            }
            finally
            {
                triggeringAlarms = false;
            }

            RemoveExpiredAlarms();
        }