3 #include "./level_picker.h"
4 #include "system/stacktrace.h"
6 #include "system/nth_alloc.h"
8 #include "game/level/background.h"
10 /* TODO(#606): LevelPicker doesn't allow to select any levels */
16 Background *background;
20 LevelPicker *create_level_picker(const char *dirpath)
22 trace_assert(dirpath);
29 LevelPicker *level_picker = PUSH_LT(
31 nth_alloc(sizeof(LevelPicker)),
33 if (level_picker == NULL) {
36 level_picker->lt = lt;
38 level_picker->dirpath = PUSH_LT(
40 string_duplicate(dirpath, NULL),
42 if (level_picker->dirpath == NULL) {
46 level_picker->background = PUSH_LT(
48 create_background(hexstr("073642")),
50 if (level_picker->background == NULL) {
54 level_picker->camera_position = vec(0.0f, 0.0f);
59 void destroy_level_picker(LevelPicker *level_picker)
61 trace_assert(level_picker);
62 RETURN_LT0(level_picker->lt);
65 int level_picker_render(const LevelPicker *level_picker,
67 SDL_Renderer *renderer)
69 trace_assert(level_picker);
70 trace_assert(renderer);
72 if (background_render(level_picker->background, camera) < 0) {
79 int level_picker_update(LevelPicker *level_picker,
82 trace_assert(level_picker);
84 vec_add(&level_picker->camera_position,
85 vec(50.0f * delta_time, 0.0f));
90 int level_picker_event(LevelPicker *level_picker, const SDL_Event *event)
92 trace_assert(level_picker);
97 int level_picker_input(LevelPicker *level_picker,
98 const Uint8 *const keyboard_state,
99 SDL_Joystick *the_stick_of_joy)
101 trace_assert(level_picker);
102 trace_assert(keyboard_state);
103 trace_assert(the_stick_of_joy);
107 const char *level_picker_selected_level(const LevelPicker *level_picker)
109 trace_assert(level_picker);
110 return level_picker->dirpath;
113 void level_picker_clean_selection(LevelPicker *level_picker)
115 trace_assert(level_picker);
118 int level_picker_enter_camera_event(LevelPicker *level_picker,
121 camera_center_at(camera, level_picker->camera_position);