summaryrefslogtreecommitdiff
path: root/Penguloon/SceneManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Penguloon/SceneManager.cs')
-rw-r--r--Penguloon/SceneManager.cs71
1 files changed, 71 insertions, 0 deletions
diff --git a/Penguloon/SceneManager.cs b/Penguloon/SceneManager.cs
new file mode 100644
index 0000000..7ea296a
--- /dev/null
+++ b/Penguloon/SceneManager.cs
@@ -0,0 +1,71 @@
+using Microsoft.Xna.Framework.Input.Touch;
+using Penguloon.Scenes;
+
+namespace Penguloon
+{
+ public static class SceneManager
+ {
+ public static SelectedScene SelectedScene { get; set; } = SelectedScene.Loading;
+
+ public static SceneBase MenuScene { get; set; }
+
+ public static SceneBase LevelSelectionScene { get; set; }
+
+ public static SceneBase LoadingScene { get; set; }
+
+ public static SceneBase GameScene { get; set; }
+
+ /// <summary>
+ /// Initialize scene manager.
+ /// </summary>
+ public static void Initialize(Main main)
+ {
+ LoadingScene = new LoadingScene(main);
+ }
+
+ /// <summary>
+ /// Draw selected scene.
+ /// </summary>
+ /// <param name="deltaTime">Delta time.</param>
+ public static void Draw(float deltaTime)
+ {
+ switch (SelectedScene)
+ {
+ case SelectedScene.Menu:
+ MenuScene.Draw(deltaTime); break;
+ case SelectedScene.Ingame:
+ GameScene.Draw(deltaTime); break;
+ case SelectedScene.LevelSelection:
+ LevelSelectionScene.Draw(deltaTime); break;
+ case SelectedScene.Loading:
+ LoadingScene.Draw(deltaTime); break;
+
+ default:
+ return;
+ }
+ }
+
+ /// <summary>
+ /// Update selected scene.
+ /// </summary>
+ /// <param name="deltaTime">Delta time.</param>
+ /// <param name="touchLocations">Finger touch points.</param>
+ public static void Update(float deltaTime, TouchLocation[] touchLocations)
+ {
+ switch (SelectedScene)
+ {
+ case SelectedScene.Menu:
+ MenuScene.Update(deltaTime, touchLocations); break;
+ case SelectedScene.Ingame:
+ GameScene.Update(deltaTime, touchLocations); break;
+ case SelectedScene.LevelSelection:
+ LevelSelectionScene.Update(deltaTime, touchLocations); break;
+ case SelectedScene.Loading:
+ LoadingScene.Update(deltaTime, touchLocations); break;
+
+ default:
+ return;
+ }
+ }
+ }
+} \ No newline at end of file