]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level/platforms.c
Merge pull request #1209 from isidentical/console-shortcuts
[nothing.git] / src / game / level / platforms.c
index a0b2e2885c9cf019b6d5f35d5a63d8eec4e5672b..55b98682b6f4b191e78a448f9a1f5257adadeb11 100644 (file)
@@ -1,4 +1,4 @@
-#include <SDL2/SDL.h>
+#include <SDL.h>
 #include "system/stacktrace.h"
 #include <stdio.h>
 #include <stdlib.h>
@@ -7,11 +7,10 @@
 
 #include "platforms.h"
 #include "system/lt.h"
-#include "system/lt/lt_adapters.h"
 #include "system/line_stream.h"
 #include "system/nth_alloc.h"
 #include "system/log.h"
-#include "game/level/level_editor/layer.h"
+#include "game/level/level_editor/rect_layer.h"
 
 struct Platforms {
     Lt *lt;
@@ -21,14 +20,11 @@ struct Platforms {
     size_t rects_size;
 };
 
-Platforms *create_platforms_from_layer(const Layer *layer)
+Platforms *create_platforms_from_rect_layer(const RectLayer *layer)
 {
     trace_assert(layer);
 
     Lt *lt = create_lt();
-    if (lt == NULL) {
-        return NULL;
-    }
 
     Platforms *platforms = PUSH_LT(
         lt,
@@ -39,20 +35,20 @@ Platforms *create_platforms_from_layer(const Layer *layer)
     }
     platforms->lt = lt;
 
-    platforms->rects_size = layer_count(layer);
+    platforms->rects_size = rect_layer_count(layer);
 
     platforms->rects = PUSH_LT(lt, nth_calloc(1, sizeof(Rect) * platforms->rects_size), free);
     if (platforms->rects == NULL) {
         RETURN_LT(lt, NULL);
     }
-    memcpy(platforms->rects, layer_rects(layer), sizeof(Rect) * platforms->rects_size);
+    memcpy(platforms->rects, rect_layer_rects(layer), sizeof(Rect) * platforms->rects_size);
 
 
     platforms->colors = PUSH_LT(lt, nth_calloc(1, sizeof(Color) * platforms->rects_size), free);
     if (platforms->colors == NULL) {
         RETURN_LT(lt, NULL);
     }
-    memcpy(platforms->colors, layer_colors(layer), sizeof(Color) * platforms->rects_size);
+    memcpy(platforms->colors, rect_layer_colors(layer), sizeof(Color) * platforms->rects_size);
 
     return platforms;
 }
@@ -65,7 +61,7 @@ void destroy_platforms(Platforms *platforms)
 
 /* TODO(#450): platforms do not render their ids in debug mode */
 int platforms_render(const Platforms *platforms,
-                     Camera *camera)
+                     const Camera *camera)
 {
     for (size_t i = 0; i < platforms->rects_size; ++i) {
         if (camera_fill_rect(
@@ -90,14 +86,15 @@ void platforms_touches_rect_sides(const Platforms *platforms,
     }
 }
 
-Vec platforms_snap_rect(const Platforms *platforms,
+Vec2f platforms_snap_rect(const Platforms *platforms,
                          Rect *object)
 {
     trace_assert(platforms);
 
-    Vec result = vec(1.0f, 1.0f);
+    Vec2f result = vec(1.0f, 1.0f);
     for (size_t i = 0; i < platforms->rects_size; ++i) {
         if (rects_overlap(platforms->rects[i], *object)) {
+            // TODO(#1161): can we reuse the Level Editor snapping mechanism in physics snapping
             result = vec_entry_mult(result, rect_snap(platforms->rects[i], object));
         }
     }