summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/enemies.c4
-rw-r--r--src/enemies.h2
-rw-r--r--src/main.c3
-rw-r--r--src/player.c28
4 files changed, 24 insertions, 13 deletions
diff --git a/src/enemies.c b/src/enemies.c
index a8705ed..7073a1b 100644
--- a/src/enemies.c
+++ b/src/enemies.c
@@ -67,10 +67,10 @@ get_enemy_by_id(
return NULL;
}
-rodeo_collision_2d_world_t
+rodeo_collision_2d_world_t *
get_enemies_world(void)
{
- return collision_enemies_world;
+ return &collision_enemies_world;
}
cvec_enemy_t
diff --git a/src/enemies.h b/src/enemies.h
index b5cc916..988ea22 100644
--- a/src/enemies.h
+++ b/src/enemies.h
@@ -34,7 +34,7 @@ get_enemy_by_id(
world_id id
);
-rodeo_collision_2d_world_t
+rodeo_collision_2d_world_t *
get_enemies_world(void);
cvec_enemy_t
diff --git a/src/main.c b/src/main.c
index 1078f46..0b6c15a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -189,6 +189,7 @@ main_loop(void)
draw_player();
draw_enemies();
detect_bullet_enemy_collisions();
+ detect_player_enemy_collisions();
rodeo_debug_text_draw(
1,
@@ -271,7 +272,7 @@ main(void)
init_player();
init_enemies();
spawn_enemy(240, 240);
- spawn_enemy(100, 100);
+ //spawn_enemy(100, 100);
spawn_enemy(300, 100);
spawn_enemy(200, 330);
diff --git a/src/player.c b/src/player.c
index ef9a2a3..d9a87d2 100644
--- a/src/player.c
+++ b/src/player.c
@@ -1,6 +1,7 @@
#include "rodeo.h"
#include "input.h"
#include "player.h"
+#include "enemies.h"
#include "rodeo/collision.h"
#include "sprite.h"
@@ -9,7 +10,7 @@ struct player_t
sprite_t sprite;
rodeo_texture_2d_t texture;
int32_t hp;
- float damage_timer;
+ float damage_timer; //ms
world_id collision_id;
}
player;
@@ -45,8 +46,8 @@ init_player(void)
.height = 128,
.count = 61
}
-};
-
+ };
+ player.hp = 100;
}
void
@@ -133,17 +134,26 @@ void player_enemy_resolver(
rodeo_collision_2d_world_item_t *enemy_collision
)
{
- if (player.damage_cooldown > 1.0) {
- player.hp -= 10;
- player.damage_cooldown = 0;
- }
if (player.hp <= 0) {
- //game over
+ rodeo_log(
+ rodeo_logLevel_info,
+ "player is dead"
+ );
+ } else if (player.damage_timer > 1000.0) {
+ rodeo_log(
+ rodeo_logLevel_info,
+ "player health is now %d",
+ player.hp
+ );
+ player.hp -= 10;
+ player.damage_timer = 0;
}
+
}
void
detect_player_enemy_collisions(void)
{
-
+ player.damage_timer += rodeo_frame_time_get();
+ rodeo_collision_2d_world_compare_other(&player_collision_world, get_enemies_world(), player_enemy_resolver);
}