diff options
Diffstat (limited to 'src/scenes/puzzleScene.c')
| -rw-r--r-- | src/scenes/puzzleScene.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/scenes/puzzleScene.c b/src/scenes/puzzleScene.c index 1671cf8..7f06672 100644 --- a/src/scenes/puzzleScene.c +++ b/src/scenes/puzzleScene.c @@ -15,6 +15,8 @@ typedef struct { size_t distraction_timer; // Miliseconds elapsed float time_acc; + float blackout_state; + PopUpState state; } puzzleSceneData; // Time in seconds @@ -97,6 +99,12 @@ bool drawPuzzleScene(void *self) { }; DrawControls(self, controls_rect); + if (data->state == POPUP_REVEALING) { + DrawRectangle(0, 0, + GetScreenWidth(), GetScreenHeight(), + (Color) {0, 0, 0, 255 * (data->blackout_state >= 1 ? 1 : data->blackout_state) }); + } + return true; } @@ -120,6 +128,14 @@ void createDistraction() { bool updatePuzzleScene(void *self) { puzzleSceneData *data = ((Scene *)self)->data; + if (data->state == POPUP_REVEALING) { + data->blackout_state -= BLACKOUT_SPEED * GetFrameTime(); + if (data->blackout_state <= 0) { + data->blackout_state = 0; + data->state = POPUP_ACTIVE; + } + return true; + } Rectangle body = GetBodyRect(); Rectangle pane1, pane2; @@ -192,6 +208,9 @@ Scene *CreatePuzzleScene(Puzzle *puzzle) { data->distraction_timer = BASE_TIME_LEFT; data->time_acc = 0; + data->state = POPUP_REVEALING; + data->blackout_state = 1; + if (puzzle->InitialCode != NULL) { data->EditorInfo = CreateTextAreaFromText(EditorDisplayParams, puzzle->InitialCode); } else { |
