Exemple #1
0
 public ScheduleElement(ScheduleElement old)
 {
     Name       = old.Name;
     Lights     = old.Lights;
     Days       = new List <int>(old.Days);
     On         = old.On;
     Off        = old.Off;
     Ramp       = old.Ramp;
     Brightness = old.Brightness;
     Colour     = old.Colour;
 }
Exemple #2
0
 internal void AddElement(ScheduleElement newElement)
 {
     for (int i = 0; i < Elements.Count; i++)
     {
         if (Elements[i].Name == newElement.Name)
         {
             // if there's already an element with this name, override any settings that are non-null in the new element
             if (newElement.On != null)
             {
                 Elements[i].On = newElement.On;
             }
             if (newElement.Off != null)
             {
                 Elements[i].Off = newElement.Off;
             }
             if (newElement.Lights != null)
             {
                 Elements[i].Lights = newElement.Lights;
             }
             if (newElement.Days != null)
             {
                 Elements[i].Days = newElement.Days;
             }
             if (newElement.Ramp != 0)
             {
                 Elements[i].Ramp = newElement.Ramp;
             }
             if (newElement.Brightness != null)
             {
                 Elements[i].Brightness = newElement.Brightness;
             }
             if (newElement.Colour != null)
             {
                 Elements[i].Colour = newElement.Colour;
             }
             return;
         }
     }
     // Add as a new element if we're not overriding an existing one
     Elements.Add(new ScheduleElement(newElement));
 }
Exemple #3
0
        private WeeklyScheduleElement CreateWeeklyScheduleElement(LightState state, ScheduleElement e, int day)
        {
            Command cmd = new Command()
            {
                LightState = state,
                Ramp       = e.Ramp,
                LightIds   = new List <string>(lightingGroups[e.Lights]),
                Brightness = e.Brightness,
                Colour     = e.Colour
            };

            if (cmd.Ramp != 0)
            {
                cmd.Brightness = 254;
            }
            WeeklyScheduleElement element = new WeeklyScheduleElement()
            {
                Command = cmd,
                Name    = e.Name,
                RunTime = SecondsSinceStartOfWeek(day, (DateTime)(state == LightState.On ? e.On : e.Off))
            };

            return(element);
        }
Exemple #4
0
        private List <WeeklyScheduleElement> ConfigScheduleElementToWeeklyScheduleElement(ScheduleElement e)
        {
            List <WeeklyScheduleElement> elements = new List <WeeklyScheduleElement>();

            if (e.Days == null)
            {
                // error
            }
            foreach (int day in e.Days)
            {
                if (e.On != null)
                {
                    elements.Add(CreateWeeklyScheduleElement(LightState.On, e, day));
                }
                if (e.Off != null)
                {
                    elements.Add(CreateWeeklyScheduleElement(LightState.Off, e, day));
                }
            }
            return(elements);
        }