static void TimerCallback( [NotNull] SchedulerTask task ) {
if( task == null ) throw new ArgumentNullException( "task" );
ChatTimer timer = (ChatTimer)task.UserState;
if( task.MaxRepeats == 1 ) {
if( String.IsNullOrEmpty( timer.Message ) ) {
Chat.SendSay( Player.Console, "(Timer Up)" );
} else {
Chat.SendSay( Player.Console, "(Timer Up) " + timer.Message );
}
timer.Stop( false );
} else if( timer.announceIntervalIndex >= 0 ) {
if( timer.lastHourAnnounced != (int)timer.TimeLeft.TotalHours ) {
timer.lastHourAnnounced = (int)timer.TimeLeft.TotalHours;
timer.Announce( TimeSpan.FromHours( Math.Ceiling( timer.TimeLeft.TotalHours ) ) );
}
if( timer.TimeLeft <= AnnounceIntervals[timer.announceIntervalIndex] ) {
timer.Announce( AnnounceIntervals[timer.announceIntervalIndex] );
timer.announceIntervalIndex--;
}
}
}