]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level.c
Make platforms a transparent entity
[nothing.git] / src / game / level.c
index eeb5b65478b93c2a4145b50a22b23eddec18bd23..433b8a5097e4008e1b0f910a4b80c0a97c60fafd 100644 (file)
@@ -41,10 +41,10 @@ struct Level
     Background background;
     RigidBodies *rigid_bodies;
     Player *player;
-    Platforms *platforms;
+    Platforms platforms;
     Goals *goals;
     Lava *lava;
-    Platforms *back_platforms;
+    Platforms back_platforms;
     Boxes *boxes;
     Labels *labels;
     Regions *regions;
@@ -84,13 +84,7 @@ Level *create_level_from_level_editor(const LevelEditor *level_editor)
         RETURN_LT(lt, NULL);
     }
 
-    level->platforms = PUSH_LT(
-        lt,
-        create_platforms_from_rect_layer(level_editor->platforms_layer),
-        destroy_platforms);
-    if (level->platforms == NULL) {
-        RETURN_LT(lt, NULL);
-    }
+    level->platforms = create_platforms_from_rect_layer(level_editor->platforms_layer);
 
     level->goals = PUSH_LT(
         lt,
@@ -108,13 +102,8 @@ Level *create_level_from_level_editor(const LevelEditor *level_editor)
         RETURN_LT(lt, NULL);
     }
 
-    level->back_platforms = PUSH_LT(
-        lt,
-        create_platforms_from_rect_layer(level_editor->back_platforms_layer),
-        destroy_platforms);
-    if (level->back_platforms == NULL) {
-        RETURN_LT(lt, NULL);
-    }
+    level->back_platforms =
+        create_platforms_from_rect_layer(level_editor->back_platforms_layer);
 
     level->boxes = PUSH_LT(
         lt,
@@ -160,7 +149,7 @@ int level_render(const Level *level, const Camera *camera)
         return -1;
     }
 
-    if (platforms_render(level->back_platforms, camera) < 0) {
+    if (platforms_render(&level->back_platforms, camera) < 0) {
         return -1;
     }
 
@@ -176,7 +165,7 @@ int level_render(const Level *level, const Camera *camera)
         return -1;
     }
 
-    if (platforms_render(level->platforms, camera) < 0) {
+    if (platforms_render(&level->platforms, camera) < 0) {
         return -1;
     }
 
@@ -210,7 +199,7 @@ int level_update(Level *level, float delta_time)
     boxes_update(level->boxes, delta_time);
     player_update(level->player, delta_time);
 
-    rigid_bodies_collide(level->rigid_bodies, level->platforms);
+    rigid_bodies_collide(level->rigid_bodies, &level->platforms);
 
     player_die_from_lava(level->player, level->lava);
     regions_player_enter(level->regions, level->player);