// main procedures private void StartNewScene(Scene.SceneType scene, object data = null) { Scene s = null; switch (scene) { case Scene.SceneType.StartScreen: s = new StartScreenScene(this.ClientSize.Width, this.ClientSize.Height); break; case Scene.SceneType.GamePlay: s = new GamePlayScene(this.ClientSize.Width, this.ClientSize.Height, data); break; case Scene.SceneType.Intermission: s = new IntermissionScene(this.ClientSize.Width, this.ClientSize.Height, data); break; case Scene.SceneType.GameOver: s = new GameOverScene(this.ClientSize.Width, this.ClientSize.Height); break; } s.OnLeave += Scene_OnLeave; s.Init(); this.currentScene = s; }
public void ChangeScene(Scene.SceneType type) { Scene nextScene = null; switch (type) { case Scene.SceneType.Game: nextScene = new GameScene(spriteBatch, this); break; case Scene.SceneType.Login: nextScene = new LoginScene(spriteBatch, this); break; } nextScene.LoadScene(); //TODO: unload last scene currentScene = nextScene; }
// scene event handlers private void Scene_OnLeave(object sender, Scene.SceneType nextScene, object data) { StartNewScene(nextScene, data); }