]> git.lizzy.rs Git - nothing.git/blob - src/game/level_picker.h
Add TODO(#1222)
[nothing.git] / src / game / level_picker.h
1 #ifndef LEVEL_PICKER_H_
2 #define LEVEL_PICKER_H_
3
4 #include <SDL.h>
5
6 #include "game/camera.h"
7 #include "game/level/background.h"
8 #include "ui/wiggly_text.h"
9 #include "dynarray.h"
10
11 typedef struct {
12     Background background;
13     Vec2f camera_position;
14     WigglyText wiggly_text;
15     Dynarray items;
16     size_t items_cursor;
17     int selected_item;
18     Vec2f items_scroll;
19     Vec2f items_position;
20     Vec2f items_size;
21 } LevelPicker;
22
23 // TODO(#1221): Level Picker scroll does not support mouse wheel
24 // TODO(#1222): Level Picker scroll does not support dragging
25
26 void level_picker_populate(LevelPicker *level_picker,
27                            const char *dirpath);
28
29 static inline
30 void destroy_level_picker(LevelPicker level_picker)
31 {
32     free(level_picker.items.data);
33 }
34
35 int level_picker_render(const LevelPicker *level_picker,
36                         const Camera *camera);
37 int level_picker_update(LevelPicker *level,
38                         Camera *camera,
39                         float delta_time);
40 int level_picker_event(LevelPicker *level_picker,
41                        const SDL_Event *event);
42 int level_picker_input(LevelPicker *level_picker,
43                        const Uint8 *const keyboard_state,
44                        SDL_Joystick *the_stick_of_joy);
45 int level_picker_enter_camera_event(LevelPicker *level_picker,
46                                     Camera *camera);
47
48 const char *level_picker_selected_level(const LevelPicker *level_picker);
49 void level_picker_clean_selection(LevelPicker *level_picker);
50
51
52 #endif  // LEVEL_PICKER_H_