I would put the sets of colors in an array, and then just cycle thru the selected array.
So for example you might have:
byte springColorArray [] = {
0x23,0x56,0x78, 0x68,0xa0,0xc2, 0x93,0x58,0xd2, // 3 colors to send out for spring
};
byte summerColorArray [] = {
0x23,0x56,0x78, 0x68,0xa0,0xc2, 0x93,0x58,0xd2, // 3 colors to send out for summer
};
byte fallColorArray [] = {
0x23,0x56,0x78, 0x68,0xa0,0xc2, 0x93,0x58,0xd2, // 3 colors to send out for fall
};
byte winterColorArray [] = {
0x23,0x56,0x78, 0x68,0xa0,0xc2, 0x93,0x58,0xd2, // 3 colors to send out for winter
};
byte spring = 0;
byte summer = 1;
byte fall = 2;
byte winter = 3;
void loop(){
seasonSelected = 0;
if (digitalRead(pin3) == HIGH){
seasonSelected = 2; // seasonSelected = 0 or 2
}
if (digitalRead(pin2) == HIGH){
seasonSelected = seasonSelected +1; // seasonSelected = 0, 1, 2, or 3, or spring-summer-fall-winter
}
if (seasonSelected == spring){
// use Adafruit neopixel library to send out springColorArray[0] to [2], pause?, then [3] to [5], pause? then [6] to [8]
// if you have a string of LEDs all to show the same color, send the 3 bytes out for as many LEDs as you have
}
if (seasonSelected == summer){
// use Adafruit neopixel library to send out summerColorArray[0] to [2], pause?, then [3] to [5], pause? then [6] to [8]
// if you have a string of LEDs all to show the same color, send the 3 bytes out for as many LEDs as you have
}
etc for fall & winter
So maybe something like that if I understand you correctly.
I haven't used the WS2812 library, so I don't know what's involved to have it send out bytes of data from an array.