]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level/lava.c
(#639) Make rigid bodies interact with platforms
[nothing.git] / src / game / level / lava.c
index 62017b4e8523b192ac768d21aabb5cc25c2895da..1e6456b7c7671d1b39e81d093de59def4ca4d318 100644 (file)
@@ -1,5 +1,5 @@
 #include <SDL2/SDL.h>
-#include <assert.h>
+#include "system/stacktrace.h"
 #include <stdio.h>
 
 #include "color.h"
@@ -7,9 +7,10 @@
 #include "game/level/player/rigid_rect.h"
 #include "lava.h"
 #include "math/rect.h"
-#include "system/error.h"
 #include "system/lt.h"
 #include "system/line_stream.h"
+#include "system/nth_alloc.h"
+#include "system/log.h"
 
 #define LAVA_BOINGNESS 2500.0f
 
@@ -21,16 +22,15 @@ struct Lava {
 
 Lava *create_lava_from_line_stream(LineStream *line_stream)
 {
-    assert(line_stream);
+    trace_assert(line_stream);
 
     Lt *lt = create_lt();
     if (lt == NULL) {
         return NULL;
     }
 
-    Lava *lava = PUSH_LT(lt, malloc(sizeof(Lava)), free);
+    Lava *lava = PUSH_LT(lt, nth_alloc(sizeof(Lava)), free);
     if (lava == NULL) {
-        throw_error(ERROR_TYPE_LIBC);
         RETURN_LT(lt, NULL);
     }
 
@@ -38,13 +38,12 @@ Lava *create_lava_from_line_stream(LineStream *line_stream)
             line_stream_next(line_stream),
             "%lu",
             &lava->rects_count) < 0) {
-        throw_error(ERROR_TYPE_LIBC);
+        log_fail("Could not read amount of lavas\n");
         RETURN_LT(lt, NULL);
     }
 
-    lava->rects = PUSH_LT(lt, malloc(sizeof(Wavy_rect*) * lava->rects_count), free);
+    lava->rects = PUSH_LT(lt, nth_alloc(sizeof(Wavy_rect*) * lava->rects_count), free);
     if (lava->rects == NULL) {
-        throw_error(ERROR_TYPE_LIBC);
         RETURN_LT(lt, NULL);
     }
 
@@ -62,7 +61,7 @@ Lava *create_lava_from_line_stream(LineStream *line_stream)
 
 void destroy_lava(Lava *lava)
 {
-    assert(lava);
+    trace_assert(lava);
     RETURN_LT0(lava->lt);
 }
 
@@ -70,8 +69,8 @@ void destroy_lava(Lava *lava)
 int lava_render(const Lava *lava,
                 Camera *camera)
 {
-    assert(lava);
-    assert(camera);
+    trace_assert(lava);
+    trace_assert(camera);
 
     for (size_t i = 0; i < lava->rects_count; ++i) {
         if (wavy_rect_render(lava->rects[i], camera) < 0) {
@@ -84,7 +83,7 @@ int lava_render(const Lava *lava,
 
 int lava_update(Lava *lava, float delta_time)
 {
-    assert(lava);
+    trace_assert(lava);
 
     for (size_t i = 0; i < lava->rects_count; ++i) {
         if (wavy_rect_update(lava->rects[i], delta_time) < 0) {
@@ -98,7 +97,7 @@ int lava_update(Lava *lava, float delta_time)
 bool lava_overlaps_rect(const Lava *lava,
                         Rect rect)
 {
-    assert(lava);
+    trace_assert(lava);
 
     for (size_t i = 0; i < lava->rects_count; ++i) {
         if (rects_overlap(wavy_rect_hitbox(lava->rects[i]), rect)) {
@@ -111,7 +110,7 @@ bool lava_overlaps_rect(const Lava *lava,
 
 void lava_float_rigid_rect(Lava *lava, Rigid_rect *object)
 {
-    assert(lava);
+    trace_assert(lava);
 
     const Rect object_hitbox = rigid_rect_hitbox(object);
     for (size_t i = 0; i < lava->rects_count; ++i) {