diff options
| author | physick <mynameisgennadiy@vk.com> | 2026-08-31 17:16:44 +0500 |
|---|---|---|
| committer | physick <mynameisgennadiy@vk.com> | 2026-08-31 17:16:44 +0500 |
| commit | e4b96cc66d8c4269661745ce187cb58c852542d3 (patch) | |
| tree | 4268a1ee350a9d762694e1de8803493ba4237bb1 /src/scenes/puzzleScene.c | |
| parent | b45620544427306854a28a5163fafd45b007acc2 (diff) | |
transitions
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 { |
