//====== public methods public void StartGame(IGraphNode mainNode) { logger.Log($"Starting game.", false); IGraphNode node = mainNode; ScreenTransitionActivator nextTransition = null; do { GameModule module = node.GetInstance(); logger.Log("Going to module: " + module.GetType().Name, false); var loop = new GameModuleLoop(module, nextTransition ?? NullTransition.Activator, hal, sleeper); var result = loop.Start(); (node, nextTransition) = node.GetNextNode(result); }while (node is not null); logger.Log($"Exiting game.", false); }