Sorry, but your architecture only works if you take into consideration ALL possible combination of flags. You say “if music stopped and some other thing ended, start cutscene”. What if I have a third thread that’s supposed to change the state? It’s now “if A stopped and B stopped check C and decide”… that’s a nighmare.
I think you’re not aligned with us on the meaning of “cutscene”. In fact,
are the central topic in this discussion. A cutscene is whatever happens on the screen and you’re not controlling. It might be a different scene, like the monitor scenes in TWP, or a simple temporary loss of control, as in when you first meet the Sheriff (he does, in fact, refer to it as a cutscene) or when the last page of Ransome’s joke book flies out of the window.
These cutscenes, if triggered by timed events, need to take threads into consideration. A loop approach that just decides “which one” to start, isn’t powerful enough. I know, since I tried: when I first began my engin I wanted to use a minimalistic approach, the result was that the engine couldn’t support anything outside of linear execution paths.
There’s a reason why everyone is talking about threads.