From 9fbbd833a5698af836faac45596952d383bee6bb Mon Sep 17 00:00:00 2001 From: Sara Date: Fri, 1 Dec 2023 21:44:30 +0100 Subject: [PATCH] feat: enemy now looks at player when hit --- game/src/Enemy.c | 10 ++++++++-- game/src/Enemy.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/game/src/Enemy.c b/game/src/Enemy.c index ff41432..b58ed91 100644 --- a/game/src/Enemy.c +++ b/game/src/Enemy.c @@ -1,9 +1,11 @@ #include "Enemy.h" #include "debug.h" #include "Messages.h" +#include "DamageEvent.h" #include "game_world.h" #include "physics.h" #include "physics_world.h" +#include "sprite.h" Enemy* MakeEnemy() { Enemy* self = malloc(sizeof(Enemy)); @@ -15,6 +17,7 @@ Enemy* MakeEnemy() { .collider = NULL, .sprite = sprite_new_empty(), .hurt = 0, + .facing = 1, .idleAnim = NULL, .walkAnim = NULL, .hurtAnim = NULL, @@ -37,7 +40,7 @@ Enemy* MakeEnemy() { Enemy* SpawnEnemy(Vector location, const State* entryState) { Enemy* self = MakeEnemy(); self->behaviour = state_machine_init(self, entryState); - self->transform.position = location; + rigidbody_get_transform(self->rigidbody)->position = location; game_world_add_entity(Enemy_as_BehaviourEntity(self)); physics_world_add_entity(Enemy_as_PhysicsEntity(self)); return self; @@ -50,6 +53,7 @@ void EnemyUpdate(Enemy* self, float deltaTime) { } void EnemyDraw(Enemy* self) { + sprite_flip_horizontal(self->sprite, self->facing == -1); animation_sprite_draw(self->currentAnimation, &self->transform); } @@ -67,10 +71,12 @@ void EnemyOnCollision(Enemy* self, Collision collision) {} void EnemyOnOverlap(Enemy* self, Collider* other) {} void* EnemyHandleMessage(Enemy* self, MessageID id, uintptr_t data) { + DamageEventData* damage = (DamageEventData*)data; switch(id) { case MESSAGE_DEAL_DAMAGE: - self->health -= (int)data; + self->health -= damage->damageAmount; self->hurt = 1; + self->facing = ((damage->origin.x - self->transform.position.x) > 0) * 2 - 1; if(self->health <= 0) game_world_destroy_entity(Enemy_as_BehaviourEntity(self)); break; diff --git a/game/src/Enemy.h b/game/src/Enemy.h index 9c21af3..98adbd8 100644 --- a/game/src/Enemy.h +++ b/game/src/Enemy.h @@ -22,6 +22,7 @@ typedef struct Enemy { Sprite* sprite; int hurt; + int facing; AnimationSprite* idleAnim; AnimationSprite* walkAnim;