This is actually the default game design structure for parser-based IF. (Yes, there has been the odd story-based CS-style constantly-being-pulled-forward design there as well, but not many.) Thousands of games have been made and publicly released in this style as part of that tradition. This is partly because those engines all implement space being divided into discrete areas which are connected in a certain arrangement, and most also include (or can be easily extended to include) actions taking variable lengths of time and certain events needing to happen at certain times.
@Sinnie, you may want to look at a language like Inform 7 and see if it offers something useful to you.
