]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level/level_editor.h
Remove Grid and ActionPicker
[nothing.git] / src / game / level / level_editor.h
index e12770a3e3352bfc7dc91cc70ce27879e600eba1..90c5e0bd1aa540f24b9f7eaef970ec3a56f7c187 100644 (file)
@@ -1,35 +1,67 @@
 #ifndef LEVEL_EDITOR_H_
 #define LEVEL_EDITOR_H_
 
+#include "game/level/level_editor/layer.h"
+#include "game/level/level_editor/layer_picker.h"
+#include "game/level/level_editor/undo_history.h"
+#include "ui/wiggly_text.h"
+#include "ui/cursor.h"
+
 typedef struct LevelEditor LevelEditor;
 typedef struct RectLayer RectLayer;
 typedef struct PointLayer PointLayer;
+typedef struct LabelLayer LabelLayer;
+typedef struct Sound_samples Sound_samples;
+
+typedef enum {
+    LEVEL_EDITOR_IDLE = 0,
+    LEVEL_EDITOR_SAVEAS
+} LevelEditorState;
+
+struct LevelEditor
+{
+    Lt *lt;
+    LevelEditorState state;
+    Vec2f camera_position;
+    float camera_scale;
+    Edit_field edit_field_filename;
+    LayerPicker layer_picker;
+    FadingWigglyText notice;
+
+    RectLayer *boxes_layer;
+    RectLayer *platforms_layer;
+    RectLayer *back_platforms_layer;
+    PointLayer *goals_layer;
+    PlayerLayer player_layer;
+    RectLayer *lava_layer;
+    RectLayer *regions_layer;
+    BackgroundLayer background_layer;
+    LabelLayer *label_layer;
 
-// TODO(#820): LevelEditor cannot generate a level file
+    LayerPtr layers[LAYER_PICKER_N];
 
-LevelEditor *create_level_editor(RectLayer *boxes_layer,
-                                 RectLayer *platforms_layer,
-                                 RectLayer *back_platforms_layer,
-                                 PointLayer *goals_layer,
-                                 PlayerLayer *player_layer_render,
-                                 RectLayer *lava_editor,
-                                 RectLayer *regions_layer);
+    UndoHistory undo_history;
+
+    bool drag;
+    int bell;
+    int click;
+    int save;
+
+    const char *file_name;
+};
+
+LevelEditor *create_level_editor(Cursor *cursor);
+LevelEditor *create_level_editor_from_file(const char *file_name, Cursor *cursor);
 void destroy_level_editor(LevelEditor *level_editor);
 
 int level_editor_render(const LevelEditor *level_editor,
-                        Camera *camera);
+                        const Camera *camera);
 int level_editor_event(LevelEditor *level_editor,
                        const SDL_Event *event,
-                       const Camera *camera);
+                       Camera *camera);
 int level_editor_focus_camera(LevelEditor *level_editor,
                               Camera *camera);
-
-const RectLayer *level_editor_boxes(const LevelEditor *level_editor);
-const RectLayer *level_editor_platforms(const LevelEditor *level_editor);
-const RectLayer *level_editor_back_platforms(const LevelEditor *level_editor);
-const PointLayer *level_editor_goals_layer(const LevelEditor *level_editor);
-const PlayerLayer *level_editor_player_layer(const LevelEditor *level_editor);
-const RectLayer *level_editor_lava_layer(const LevelEditor *level_editor);
-const RectLayer *level_editor_regions_layer(const LevelEditor *level_editor);
+int level_editor_update(LevelEditor *level_editor, float delta_time);
+void level_editor_sound(LevelEditor *level_editor, Sound_samples *sound_samples);
 
 #endif  // LEVEL_EDITOR_H_