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