Neat idea.
I’d suggest breaking this into pieces as a way to simplify coding:
Define different types of buildings, based on index number of the led. So LEDs 0-4 are building type 1, 5-9 are building type 2, 10-20 are building type 3, maybe LEDs 21-25 are type 1, etc.
So now your types are essentially each a group of LEDs, and you can decide to different things with each, in each phase of the time. So type 1 does something at dawn, something different as the morning progresses, something as the dusk approachs… And then something in the evening.
You can define time(s) slices. I do like the idea of a sunrise and sunset, but up to you of course.
So now, once you’ve defined buildings and times, you just need to have code for each combo…
Seems daunting until you realize that we have a lot of pattern code out there, and this is really just a bunch of segments (types). See also original multisegment post. So most of code is done, just a matter of picking the right bits, adding some time changing logic (for each phase of time) and maybe lots of tweaking and small improvements.