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