Try this:
void doEffects( void )
{
static uint8_t
stripIdx = 0,
stateEffects = 0;
switch ( stateEffects )
{
case 0:
//stay in state 0 doing the meteor effect...
meteorRain( stripIdx, CRGB::Black, CRGB::White, 10, 175, true, 25 );
stripIdx++;
//until all strips are done...
if ( stripIdx == NUM_STRIPS )
{
stripIdx = 0;
stateEffects++; //then bump to the next state
}//if
break;
case 1:
stripFillEffect( stripIdx, CRGB::Green, 25ul );
stripFillEffect( stripIdx+1, CRGB::Green, 25ul );
stripFillEffect( stripIdx+2, CRGB::Green, 25ul );
stripIdx += 3;
if( stripIdx == NUM_STRIPS )
{
stripIdx = 0;
stateEffects++;
}//if
break;
case 2:
stripFillEffect( stripIdx, CRGB::Black, 25ul );
stripFillEffect( stripIdx+1, CRGB::Black, 25ul );
stripFillEffect( stripIdx+2, CRGB::Black, 25ul );
stripIdx += 3;
if( stripIdx == NUM_STRIPS )
stateEffects++;
break;
case 3:
stripFillEffect( stripIdx-1, CRGB::Green, 25ul );
stripFillEffect( stripIdx-2, CRGB::Green, 25ul );
stripFillEffect( stripIdx-3, CRGB::Green, 25ul );
stripIdx -= 3;
if( stripIdx == 0 )
{
stripIdx = NUM_STRIPS;
stateEffects++;
}//if
break;
case 4:
stripFillEffect( stripIdx-1, CRGB::Black, 25ul );
stripFillEffect( stripIdx-2, CRGB::Black, 25ul );
stripFillEffect( stripIdx-3, CRGB::Black, 25ul );
stripIdx -= 3;
if( stripIdx == 0 )
stateEffects++;
break;
case 5:
for ( stripIdx = 0; stripIdx < NUM_STRIPS; stripIdx += 3 )
{
fill_solid( grLeds[stripIdx], NUM_LEDS_PER_STRIP, CRGB::White );
stripControl[stripIdx]->showLeds(gBrightness);
fill_solid( grLeds[stripIdx + 1], NUM_LEDS_PER_STRIP, CRGB::White );
stripControl[stripIdx + 1]->showLeds(gBrightness);
fill_solid( grLeds[stripIdx + 2], NUM_LEDS_PER_STRIP, CRGB::White );
stripControl[stripIdx + 2]->showLeds(gBrightness);
}//for
//move to the next effect or done
stateEffects++;
break;
default:
//done effects; do nothing
break;
}//switch
}//doEffects
void stripFillEffect( uint8_t stripNo, CRGB color, uint32_t timeDelay )
{
fill_solid( grLeds[stripNo], NUM_LEDS_PER_STRIP, color );
stripControl[stripNo]->showLeds(gBrightness);
delay( timeDelay );
}//stripFillEffect
As you settle on whatever effects you want you might think about the patterns and statements that are common to all and see if there's a way to approach them differently; instead of having discrete states for each effect that are very close to one another, maybe have a function that does that and pass the start and end color, the direction of movement etc.