I'm in the middle of cooking dinner but at a high level can you just keep the lights in an array and use a for loop to work through them when a flipper event is triggered?
eg
float light[whatever]
float newlight[whatever];
for i = 0; i < whatever; i++
{
if light[i] == true then newlight [i+1] = true
}
then copy newlight[] into light[]