]> git.lizzy.rs Git - nothing.git/commitdiff
(#1071) Add background to the settings page
authorrexim <reximkut@gmail.com>
Sat, 2 Nov 2019 20:34:06 +0000 (03:34 +0700)
committerrexim <reximkut@gmail.com>
Sat, 2 Nov 2019 20:34:06 +0000 (03:34 +0700)
src/game.c
src/game/settings.c
src/game/settings.h

index 2e0ab49a083fa717176123817e0ce77082cf0418..5f2fcc5359b7682b379e4f5aad5e1177a8f1625b 100644 (file)
@@ -96,12 +96,7 @@ Game *create_game(const char *level_folder,
         RETURN_LT(lt, NULL);
     }
 
-    game->settings.volume_slider = (Slider) {
-        .drag = 0,
-        .value = 80.0f,
-        .max_value = 100.0f,
-    };
-    game->settings.volume_slider_scale = vec(0.25f, 0.10f);
+    game->settings = create_settings();
 
     game->renderer = renderer;
     game->texture_cursor = PUSH_LT(
@@ -122,7 +117,7 @@ Game *create_game(const char *level_folder,
     game->cursor_x = 0;
     game->cursor_y = 0;
 
-    game_switch_state(game, GAME_STATE_LEVEL_PICKER);
+    game_switch_state(game, GAME_STATE_SETTINGS);
 
     return game;
 }
@@ -142,31 +137,18 @@ int game_render(const Game *game)
         if (level_render(game->level, &game->camera) < 0) {
             return -1;
         }
-
-        if (game_render_cursor(game) < 0) {
-            return -1;
-        }
-
     } break;
 
     case GAME_STATE_LEVEL_PICKER: {
         if (level_picker_render(game->level_picker, &game->camera) < 0) {
             return -1;
         }
-
-        if (game_render_cursor(game) < 0) {
-            return -1;
-        }
     } break;
 
     case GAME_STATE_LEVEL_EDITOR: {
         if (level_editor_render(game->level_editor, &game->camera) < 0) {
             return -1;
         }
-
-        if (game_render_cursor(game) < 0) {
-            return -1;
-        }
     } break;
 
     case GAME_STATE_SETTINGS: {
@@ -176,6 +158,10 @@ int game_render(const Game *game)
     case GAME_STATE_QUIT: break;
     }
 
+    if (game_render_cursor(game) < 0) {
+        return -1;
+    }
+
     return 0;
 }
 
@@ -277,7 +263,7 @@ int game_update(Game *game, float delta_time)
     } break;
 
     case GAME_STATE_SETTINGS: {
-        settings_update(&game->settings, delta_time);
+        settings_update(&game->settings, &game->camera, delta_time);
     } break;
 
     case GAME_STATE_QUIT:
index 66b2c168921b65de71da36f1818b5b260beeb2bb..9f9f5ba89c955e5eaf84fbeec3e16ff427b2640e 100644 (file)
@@ -1,11 +1,38 @@
 #include "system/stacktrace.h"
 #include "settings.h"
 
+Settings create_settings(void)
+{
+    Settings settings = {
+        .volume_slider = {
+            .drag = 0,
+            .value = 80.0f,
+            .max_value = 100.0f,
+        },
+
+        .volume_slider_scale = {
+            0.25f, 0.10f
+        },
+
+        .background = {
+            .base_color = {0.5f, 0.8f, 0.5f, 1.0f}
+        },
+
+        .camera_position = {
+            0.0f, 0.0f
+        }
+    };
+
+    return settings;
+}
+
 void settings_render(const Settings *settings, const Camera *camera)
 {
     trace_assert(settings);
     trace_assert(camera);
 
+    background_render(&settings->background, camera);
+
     const Rect viewport = camera_view_port_screen(camera);
 
     /* CSS volume */
@@ -41,8 +68,12 @@ void settings_event(Settings *settings, Camera *camera, const SDL_Event *event)
     }
 }
 
-void settings_update(Settings *settings, float dt)
+void settings_update(Settings *settings, Camera *camera, float dt)
 {
     trace_assert(settings);
-    (void) dt;
+    trace_assert(camera);
+
+    vec_add(&settings->camera_position,
+            vec(50.0f * dt, 0.0f));
+    camera_center_at(camera, settings->camera_position);
 }
index 9876c8b48a57bd459fc316013e2ad4ccb53ddc0e..1226a664e13490d7d8c42a608e284dfd5002f22e 100644 (file)
@@ -2,15 +2,20 @@
 #define SETTINGS_H_
 
 #include "game/camera.h"
+#include "game/level/background.h"
 #include "ui/slider.h"
 
 typedef struct {
+    Background background;
     Slider volume_slider;
     Vec2f volume_slider_scale;
+    Vec2f camera_position;
 } Settings;
 
+Settings create_settings(void);
+
 void settings_render(const Settings *settings, const Camera *camera);
 void settings_event(Settings *settings, Camera *camera, const SDL_Event *event);
-void settings_update(Settings *settings, float dt);
+void settings_update(Settings *settings, Camera *camera, float dt);
 
 #endif  // SETTINGS_H_