summaryrefslogtreecommitdiff
path: root/src/scenes/puzzleScene.c
diff options
context:
space:
mode:
authorphysick <mynameisgennadiy@vk.com>2026-08-31 17:16:44 +0500
committerphysick <mynameisgennadiy@vk.com>2026-08-31 17:16:44 +0500
commite4b96cc66d8c4269661745ce187cb58c852542d3 (patch)
tree4268a1ee350a9d762694e1de8803493ba4237bb1 /src/scenes/puzzleScene.c
parentb45620544427306854a28a5163fafd45b007acc2 (diff)
transitions
Diffstat (limited to 'src/scenes/puzzleScene.c')
-rw-r--r--src/scenes/puzzleScene.c19
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 {