]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level/level_editor/background_layer.c
Try to fix MSVC build
[nothing.git] / src / game / level / level_editor / background_layer.c
index 7df40b14586cb95ff66a1e9e22b70db658ed6ce1..3ac3c5da4646b2e1891ccc5be1c940bc41cf0927 100644 (file)
@@ -8,7 +8,6 @@
 #include "background_layer.h"
 #include "undo_history.h"
 
-
 BackgroundLayer create_background_layer(Color color)
 {
     BackgroundLayer layer = {
@@ -18,22 +17,14 @@ BackgroundLayer create_background_layer(Color color)
     return layer;
 }
 
-int background_layer_read_from_line_stream(BackgroundLayer *layer,
-                                           LineStream *line_stream)
+BackgroundLayer chop_background_layer(String *input)
 {
-    if (color_picker_read_from_line_stream(
-            &layer->color_picker,
-            line_stream) < 0) {
-        return -1;
-    }
-
-    layer->prev_color = color_picker_rgba(&layer->color_picker);
-
-    return 0;
+    String line = trim(chop_by_delim(input, '\n'));
+    return create_background_layer(hexs(line));
 }
 
 int background_layer_render(BackgroundLayer *layer,
-                            Camera *camera,
+                            const Camera *camera,
                             int active)
 {
     trace_assert(layer);
@@ -48,16 +39,21 @@ int background_layer_render(BackgroundLayer *layer,
     return 0;
 }
 
+typedef struct {
+    BackgroundLayer *layer;
+    Color color;
+} BackgroundUndoContext;
+
 static
-void background_undo_color(void *layer, Context context)
+void background_undo_color(void *context, size_t context_size)
 {
-    trace_assert(layer);
-    BackgroundLayer *background_layer = layer;
+    trace_assert(context);
+    trace_assert(sizeof(BackgroundUndoContext) == context_size);
 
-    trace_assert(sizeof(Color) < CONTEXT_SIZE);
-    Color *color = (Color *)context.data;
+    BackgroundUndoContext *undo_context = context;
+    BackgroundLayer *background_layer = undo_context->layer;
 
-    background_layer->color_picker = create_color_picker_from_rgba(*color);
+    background_layer->color_picker = create_color_picker_from_rgba(undo_context->color);
 }
 
 int background_layer_event(BackgroundLayer *layer,
@@ -81,11 +77,15 @@ int background_layer_event(BackgroundLayer *layer,
     }
 
     if (selected && !color_picker_drag(&layer->color_picker)) {
+        BackgroundUndoContext context = {
+            .layer = layer,
+            .color = layer->prev_color
+        };
+
         undo_history_push(
             undo_history,
-            layer,
             background_undo_color,
-            &layer->prev_color, sizeof(layer->prev_color));
+            &context, sizeof(context));
         layer->prev_color = color_picker_rgba(&layer->color_picker);
     }
 
@@ -102,5 +102,5 @@ int background_layer_dump_stream(BackgroundLayer *layer,
         color_picker_rgba(&layer->color_picker),
         stream);
 
-    return fprintf(stream, "\n");;
+    return fprintf(stream, "\n");
 }