private void ResetGame() { worldScene?.Dispose(); worldScene = new WorldScene(GameplayScene.InitialGameState) .OnPause(() => { PauseScene(worldScene); }) .OnGetIntoShip((gameState) => { shipScene.ResetCamera(); SetNextScene(shipScene.WithGameState(gameState)); }) .OnGameOver(() => { SoundManager.Play(SoundManager.Death); SetNextScene(gameOverScene); }); shipScene = new ShipScene(GameplayScene.InitialGameState) .OnGoToWater((gameState) => { SoundManager.Play(SoundManager.Metal); worldScene.ResetCamera(); SetNextScene(worldScene.WithGameState(gameState)); }) .OnPause(() => { PauseScene(shipScene); }); gameOverScene = new GameOverScene() .WithPreRender(worldScene.Render) .OnGoToStartScreen(() => { SetNextScene(this.startMenu); ResetGame(); }); }