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(
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;
}
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: {
case GAME_STATE_QUIT: break;
}
+ if (game_render_cursor(game) < 0) {
+ return -1;
+ }
+
return 0;
}
} break;
case GAME_STATE_SETTINGS: {
- settings_update(&game->settings, delta_time);
+ settings_update(&game->settings, &game->camera, delta_time);
} break;
case GAME_STATE_QUIT:
#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 */
}
}
-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);
}
#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_