summaryrefslogtreecommitdiff
path: root/src/scenes/sceneManager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/scenes/sceneManager.c')
-rw-r--r--src/scenes/sceneManager.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/scenes/sceneManager.c b/src/scenes/sceneManager.c
index 8d4c4e7..e5ab397 100644
--- a/src/scenes/sceneManager.c
+++ b/src/scenes/sceneManager.c
@@ -1,4 +1,5 @@
#include "scenes.h"
+#include <raylib.h>
#include <stdlib.h>
#include <sys/types.h>
@@ -6,10 +7,15 @@ Scene **sceneStack = NULL;
size_t sceneStackDepth = 0;
Scene *getCurrentScene() {
- if (sceneStackDepth == 0) return false;
+ if (sceneStackDepth == 0) return NULL;
return sceneStack[sceneStackDepth - 1];
}
+Scene *getPreviousScene() {
+ if (sceneStackDepth <= 1) return NULL;
+ return sceneStack[sceneStackDepth - 2];
+}
+
bool InitSceneStack() {
sceneStack = malloc(sizeof(Scene) * SCENE_STACK_SIZE);
return sceneStack != NULL;
@@ -35,6 +41,10 @@ void DeleteSceneFromStack() {
bool DrawScene() {
Scene *currentScene = getCurrentScene();
if (currentScene == NULL) return false;
+ if (currentScene->IsTransparent) {
+ Scene *prevScene = getPreviousScene();
+ if (prevScene != NULL) prevScene->Draw(prevScene);
+ }
return currentScene->Draw(currentScene);
}