public void ReInitialize()
        {
            if (config.UseDebugMessages)
            {
                Adverts.Register("Every Ten Seconds!?!?!?!?!?", Color.Chartreuse, TimeSpan.FromSeconds(10));
                Adverts.Register("Every Fifteen Seconds!?!?!?!?!?", Color.OrangeRed, TimeSpan.FromSeconds(15));
            }

            foreach (Advert.Message msg in adverts)
            {
                Adverts.Deregister(msg.Index);
            }

            adverts.Clear();

            foreach (var adv in config.Adverts)
            {
                string message = adv.Text;
                Color  color   = (Color)typeof(Color)
                                 .GetConstructor(new Type[] { typeof(int), typeof(int), typeof(int) })
                                 .Invoke(adv.Color.Cast <object>().ToArray());
                TimeSpan delay  = adv.Time.ToTimeSpan();
                TimeSpan offset = adv.Offset.ToTimeSpan();

                if (adv.RunOnce)
                {
                    offset = delay;

                    delay = TimeSpan.MaxValue - TimeSpan.FromDays(1);
                }

                adverts.Add(Adverts.Register(message, color, delay, offset));
            }
        }
        private void DeleteConfigAdvert(int index)
        {
            ConfigAdverts.Config.Advert cfad = ConfigAdverts.config.Adverts[index];
            ConfigAdverts.config.Adverts.RemoveNoShift(index);

            foreach (var m in Advert.Instance.Messages)
            {
                if (!EqualityComparer <Advert.Message> .Default.Equals(m, default(Advert.Message)) &&
                    m.Text == cfad.Text && m.Delay == cfad.Time.ToTimeSpan() && m.Offset == cfad.Offset.ToTimeSpan() &&
                    new int[] { m.Color.R, m.Color.G, m.Color.B } == cfad.Color)
                {
                    Adverts.Deregister(m.Index);
                }
            }
        }
        private void RemindCommand(CommandArgs args)
        {
            if (args.Parameters.Count < 2)
            {
                args.Player.SendMessage("Syntax: <message> <time>\nWhere 'time'is in the format '<num><unit>+', with unit being one of 'd', 'h', 'm', 's', or 'ms'.", Color.Red);
                return;
            }

            string message = args.Parameters[0];
            string time    = args.Parameters[1];

            TimeSpan tim = time.ToTimeSpan();

            RemindPlayerCheck chk = new RemindPlayerCheck(args.Player, this);

            var msg = Adverts.Register("Reminder: " + message, Color.LimeGreen, tim, chk.Check, chk.Send);

            args.Player.SendMessage("OK! You will be reminded '{0}' in {1}".SFormat(message, tim.ToReadable()), Color.LimeGreen);

            Reminders.EnsurePosition(args.Player.Index);
            Reminders[args.Player.Index].Add(msg);
        }
 public bool Send(Advert.Message m, TSPlayer ply)
 {
     self.Reminders[ply.Index].Remove(m);
     Adverts.Deregister(m.Index);
     return(true);
 }