]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level/level_editor/point_layer.h
Remove Lt from LevelEditor
[nothing.git] / src / game / level / level_editor / point_layer.h
index 7c86092ef1aa9e5edaa015e0fb56af50fd084c1c..e5c5ce8de7004da3292d4ca690e991fe5dc94009 100644 (file)
@@ -1,22 +1,54 @@
 #ifndef POINT_LAYER_H_
 #define POINT_LAYER_H_
 
-#include "math/point.h"
+#include "math/vec.h"
 #include "color.h"
 #include "layer.h"
 
 #define ID_MAX_SIZE 36
 
-typedef struct PointLayer PointLayer;
-typedef struct LineStream LineStream;
+typedef enum {
+    POINT_LAYER_IDLE = 0,
+    POINT_LAYER_EDIT_ID,
+    POINT_LAYER_MOVE,
+    POINT_LAYER_RECOLOR
+} PointLayerState;
+
+typedef struct {
+    PointLayerState state;
+    Dynarray/*<Vec2f>*/ positions;
+    Dynarray/*<Color>*/ colors;
+    Dynarray/*<char[ID_MAX_SIZE]>*/ ids;
+    int selection;
+    ColorPicker color_picker;
+
+    Vec2f inter_position;
+    Color inter_color;
+    Edit_field edit_field;
+
+    int id_name_counter;
+    const char *id_name_prefix;
+} PointLayer;
+
 
 LayerPtr point_layer_as_layer(PointLayer *point_layer);
 // NOTE: create_point_layer and create_point_layer_from_line_stream do
 // not own id_name_prefix
-PointLayer *create_point_layer(const char *id_name_prefix);
-PointLayer *create_point_layer_from_line_stream(LineStream *line_stream,
-                                                const char *id_name_prefix);
-void destroy_point_layer(PointLayer *point_layer);
+PointLayer create_point_layer(const char *id_name_prefix);
+void point_layer_reload(PointLayer *point_layer,
+                        Memory *memory,
+                        String *input);
+void point_layer_clean(PointLayer *point_layer);
+
+
+static inline
+void destroy_point_layer(PointLayer point_layer)
+{
+    free(point_layer.positions.data);
+    free(point_layer.colors.data);
+    free(point_layer.ids.data);
+}
+
 
 int point_layer_render(const PointLayer *point_layer,
                        const Camera *camera,
@@ -30,7 +62,7 @@ int point_layer_dump_stream(const PointLayer *point_layer,
                             FILE *filedump);
 
 size_t point_layer_count(const PointLayer *point_layer);
-const Point *point_layer_positions(const PointLayer *point_layer);
+const Vec2f *point_layer_positions(const PointLayer *point_layer);
 const Color *point_layer_colors(const PointLayer *point_layer);
 const char *point_layer_ids(const PointLayer *point_layer);