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); }
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(); }
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(); }