]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level/level_editor/background_layer.c
Merge pull request #1093 from tsoding/1092
[nothing.git] / src / game / level / level_editor / background_layer.c
index 7df40b14586cb95ff66a1e9e22b70db658ed6ce1..bdb77fa42529422267c9becf96079e73df142bf4 100644 (file)
@@ -33,7 +33,7 @@ int background_layer_read_from_line_stream(BackgroundLayer *layer,
 }
 
 int background_layer_render(BackgroundLayer *layer,
-                            Camera *camera,
+                            const Camera *camera,
                             int active)
 {
     trace_assert(layer);
@@ -48,16 +48,21 @@ int background_layer_render(BackgroundLayer *layer,
     return 0;
 }
 
+typedef struct {
+    BackgroundLayer *layer;
+    Color color;
+} UndoContext;
+
 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(UndoContext) == context_size);
 
-    trace_assert(sizeof(Color) < CONTEXT_SIZE);
-    Color *color = (Color *)context.data;
+    UndoContext *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 +86,15 @@ int background_layer_event(BackgroundLayer *layer,
     }
 
     if (selected && !color_picker_drag(&layer->color_picker)) {
+        UndoContext 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 +111,5 @@ int background_layer_dump_stream(BackgroundLayer *layer,
         color_picker_rgba(&layer->color_picker),
         stream);
 
-    return fprintf(stream, "\n");;
+    return fprintf(stream, "\n");
 }