]> git.lizzy.rs Git - nothing.git/blob - src/game/level/level_editor.h
2c7ebbbfdb61dbcd81e00597816e791abec5db49
[nothing.git] / src / game / level / level_editor.h
1 #ifndef LEVEL_EDITOR_H_
2 #define LEVEL_EDITOR_H_
3
4 #include "game/level/level_editor/layer.h"
5 #include "game/level/level_editor/layer_picker.h"
6 #include "game/level/level_editor/undo_history.h"
7 #include "game/level/level_editor/action_picker.h"
8 #include "ui/wiggly_text.h"
9 #include "ui/cursor.h"
10
11 typedef struct LevelEditor LevelEditor;
12 typedef struct RectLayer RectLayer;
13 typedef struct PointLayer PointLayer;
14 typedef struct LabelLayer LabelLayer;
15 typedef struct Sound_samples Sound_samples;
16
17 typedef enum {
18     LEVEL_EDITOR_IDLE = 0,
19     LEVEL_EDITOR_SAVEAS
20 } LevelEditorState;
21
22 struct LevelEditor
23 {
24     Lt *lt;
25     LevelEditorState state;
26     Vec2f camera_position;
27     float camera_scale;
28     Edit_field edit_field_filename;
29     LayerPicker layer_picker;
30     FadingWigglyText notice;
31
32     RectLayer *boxes_layer;
33     RectLayer *platforms_layer;
34     RectLayer *back_platforms_layer;
35     PointLayer *goals_layer;
36     PlayerLayer player_layer;
37     RectLayer *lava_layer;
38     RectLayer *regions_layer;
39     BackgroundLayer background_layer;
40     LabelLayer *label_layer;
41
42     LayerPtr layers[LAYER_PICKER_N];
43
44     UndoHistory undo_history;
45
46     bool drag;
47     int bell;
48     int click;
49     int save;
50
51     const char *file_name;
52 };
53
54 LevelEditor *create_level_editor(Cursor *cursor);
55 LevelEditor *create_level_editor_from_file(const char *file_name, Cursor *cursor);
56 void destroy_level_editor(LevelEditor *level_editor);
57
58 int level_editor_render(const LevelEditor *level_editor,
59                         const Camera *camera);
60 int level_editor_event(LevelEditor *level_editor,
61                        const SDL_Event *event,
62                        Camera *camera);
63 int level_editor_focus_camera(LevelEditor *level_editor,
64                               Camera *camera);
65 int level_editor_update(LevelEditor *level_editor, float delta_time);
66 void level_editor_sound(LevelEditor *level_editor, Sound_samples *sound_samples);
67
68 #endif  // LEVEL_EDITOR_H_