]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level/player.c
(#1109) Introduce ACTION_TOGGLE_GOAL
[nothing.git] / src / game / level / player.c
index be9a4f67fcb132f9f313a3f95a70fd02fba3d2ea..62d38b322d452a2a44d3f91d8cee1b3fa3035fec 100644 (file)
@@ -4,10 +4,9 @@
 #include <SDL.h>
 
 #include "game/level/explosion.h"
-#include "game/level/script.h"
 #include "game/level/rigid_bodies.h"
 #include "goals.h"
-#include "math/point.h"
+#include "math/vec.h"
 #include "platforms.h"
 #include "player.h"
 #include "system/line_stream.h"
@@ -15,6 +14,7 @@
 #include "system/lt.h"
 #include "system/nth_alloc.h"
 #include "system/stacktrace.h"
+#include "config.h"
 
 #define PLAYER_WIDTH 25.0f
 #define PLAYER_HEIGHT 25.0f
@@ -36,27 +36,23 @@ struct Player {
 
     RigidBodyId alive_body_id;
     Explosion *dying_body;
-    Script *script;
 
     int jump_threshold;
     Color color;
 
-    Vec checkpoint;
+    Vec2f checkpoint;
 
     int play_die_cue;
 };
 
 Player *create_player_from_player_layer(const PlayerLayer *player_layer,
-                                        RigidBodies *rigid_bodies,
-                                        Broadcast *broadcast)
+                                        RigidBodies *rigid_bodies)
 {
     trace_assert(player_layer);
     trace_assert(rigid_bodies);
-    trace_assert(broadcast);
 
     Lt *lt = create_lt();
 
-
     Player *player = PUSH_LT(lt, nth_calloc(1, sizeof(Player)), free);
     if (player == NULL) {
         RETURN_LT(lt, NULL);
@@ -65,14 +61,6 @@ Player *create_player_from_player_layer(const PlayerLayer *player_layer,
 
     player->rigid_bodies = rigid_bodies;
 
-    player->script = PUSH_LT(
-        lt,
-        create_script_from_string(broadcast, player_layer->source_code),
-        destroy_script);
-    if (player->script == NULL) {
-        RETURN_LT(lt, NULL);
-    }
-
     player->alive_body_id = rigid_bodies_add(
         rigid_bodies,
         rect(
@@ -84,7 +72,7 @@ Player *create_player_from_player_layer(const PlayerLayer *player_layer,
     player->dying_body = PUSH_LT(
         lt,
         create_explosion(
-            player_layer->color_picker.color,
+            color_picker_rgba(&player_layer->color_picker),
             PLAYER_DEATH_DURATION),
         destroy_explosion);
     if (player->dying_body == NULL) {
@@ -92,7 +80,7 @@ Player *create_player_from_player_layer(const PlayerLayer *player_layer,
     }
 
     player->jump_threshold = 0;
-    player->color = player_layer->color_picker.color;
+    player->color = color_picker_rgba(&player_layer->color_picker);
     player->checkpoint = player_layer->position;
     player->play_die_cue = 0;
     player->state = PLAYER_STATE_ALIVE;
@@ -102,11 +90,12 @@ Player *create_player_from_player_layer(const PlayerLayer *player_layer,
 
 void destroy_player(Player * player)
 {
+    rigid_bodies_remove(player->rigid_bodies, player->alive_body_id);
     RETURN_LT0(player->lt);
 }
 
 int player_render(const Player * player,
-                  Camera *camera)
+                  const Camera *camera)
 {
     trace_assert(player);
     trace_assert(camera);
@@ -150,7 +139,7 @@ void player_update(Player *player,
         const Rect hitbox = rigid_bodies_hitbox(player->rigid_bodies, player->alive_body_id);
 
 
-        if (hitbox.y > 1000.0f) {
+        if (hitbox.y > PLAYER_DEATH_LEVEL) {
             player_die(player);
         }
     } break;
@@ -218,10 +207,6 @@ void player_jump(Player *player)
             player->alive_body_id,
             vec(0.0f, -PLAYER_JUMP));
         player->jump_threshold++;
-
-        if (script_has_scope_value(player->script, "on-jump")) {
-            script_eval(player->script, "(on-jump)");
-        }
     }
 }
 
@@ -259,18 +244,6 @@ void player_focus_camera(Player *player,
             vec(0.0f, -player_hitbox.h * 0.5f)));
 }
 
-void player_hide_goals(const Player *player,
-                       Goals *goals)
-{
-    trace_assert(player);
-    trace_assert(goals);
-    goals_hide_from_player(
-        goals,
-        rigid_bodies_hitbox(
-            player->rigid_bodies,
-            player->alive_body_id));
-}
-
 void player_die_from_lava(Player *player,
                           const Lava *lava)
 {
@@ -283,7 +256,7 @@ void player_die_from_lava(Player *player,
     }
 }
 
-void player_checkpoint(Player *player, Vec checkpoint)
+void player_checkpoint(Player *player, Vec2f checkpoint)
 {
     player->checkpoint = checkpoint;
 }