RainStarting(); //gradually increase rain drops and at the same time will gradually fade in a different background image.
Raining(); //Keep rain drops at a steady number.
RainEnding(); //gradually decrease rain drops, and at the same time will gradually fade out the background image.
//same for cloudy day
//same for sunny day.
So for example: if I call RainStarting() function and it was Snowing(). It will automatically call SnowEnding() while doing RainStartring() function.
Hope this is detailed enough for you, if not, feel free to ask questions.