]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level/level_editor/player_layer.c
Merge pull request #1093 from tsoding/1092
[nothing.git] / src / game / level / level_editor / player_layer.c
index 50c3cfda40019ad03f18deeda69a15e6563e4c5a..9e88316c00aeddc44256370dc46d61f951310254 100644 (file)
@@ -10,7 +10,8 @@
 #include "undo_history.h"
 
 typedef struct {
-    Point position;
+    PlayerLayer *layer;
+    Vec2f position;
     Color color;
 } UndoContext;
 
@@ -18,6 +19,7 @@ static
 UndoContext player_layer_create_undo_context(PlayerLayer *player_layer)
 {
     UndoContext context = {
+        .layer = player_layer,
         .position = player_layer->position,
         .color = player_layer->prev_color
     };
@@ -26,21 +28,20 @@ UndoContext player_layer_create_undo_context(PlayerLayer *player_layer)
 }
 
 static
-void player_layer_undo(void *layer, void *context, size_t context_size)
+void player_layer_undo(void *context, size_t context_size)
 {
-    trace_assert(layer);
     trace_assert(context);
     trace_assert(sizeof(UndoContext) == context_size);
 
-    PlayerLayer *player_layer = layer;
     UndoContext *undo_context = context;
+    PlayerLayer *player_layer = undo_context->layer;
 
     player_layer->position = undo_context->position;
     player_layer->color_picker = create_color_picker_from_rgba(undo_context->color);
     player_layer->prev_color = undo_context->color;
 }
 
-PlayerLayer create_player_layer(Vec position, Color color)
+PlayerLayer create_player_layer(Vec2f position, Color color)
 {
     return (PlayerLayer) {
         .position = position,
@@ -57,7 +58,7 @@ PlayerLayer create_player_layer_from_line_stream(LineStream *line_stream)
     trace_assert(line);
 
     char colorstr[7] = "000000";
-    Point position = vec(0.0f, 0.0f);
+    Vec2f position = vec(0.0f, 0.0f);
 
     const int bound =
         sscanf(line, "%f%f%6s", &position.x, &position.y, colorstr);
@@ -82,7 +83,7 @@ LayerPtr player_layer_as_layer(PlayerLayer *player_layer)
 }
 
 int player_layer_render(const PlayerLayer *player_layer,
-                        Camera *camera,
+                        const Camera *camera,
                         int active)
 {
     trace_assert(player_layer);
@@ -132,7 +133,6 @@ int player_layer_event(PlayerLayer *player_layer,
             player_layer_create_undo_context(player_layer);
         undo_history_push(
             undo_history,
-            player_layer,
             player_layer_undo,
             &context,
             sizeof(context));
@@ -148,7 +148,6 @@ int player_layer_event(PlayerLayer *player_layer,
 
         undo_history_push(
             undo_history,
-            player_layer,
             player_layer_undo,
             &context, sizeof(context));