From c136bc1494e68e5a4e9a1cc84087d42009fe56d9 Mon Sep 17 00:00:00 2001 From: Sara <sara@saragerretsen.nl> Date: Sat, 7 Oct 2023 18:42:09 +0200 Subject: [PATCH] implemented basic player struct with impl for behaviour physics and transformable --- src/player.c | 33 +++++++++++++++++++++++++++++++++ src/player.h | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 src/player.c create mode 100644 src/player.h diff --git a/src/player.c b/src/player.c new file mode 100644 index 0000000..ba359e2 --- /dev/null +++ b/src/player.c @@ -0,0 +1,33 @@ +#include "player.h" + +void player_spawn(Player* self, Vector at) { + self->transform.position = at; +} + +void player_start(Player* self) { + self->transform = IdentityTransform; +} + +Transform* player_get_transform(Player* self) { + return &self->transform; +} + +RigidBody* player_get_rigidbody(Player* self) { + return self->rigidbody; +} + +Shape* player_get_shape(Player* self) { + return self->shape; +} + +Vector* player_get_position(Player* self) { + return &self->transform.position; +} + +Vector* player_get_scale(Player* self) { + return &self->transform.scale; +} + +float* player_get_rotation(Player* self) { + return &self->transform.rotation; +} diff --git a/src/player.h b/src/player.h new file mode 100644 index 0000000..eb1715c --- /dev/null +++ b/src/player.h @@ -0,0 +1,45 @@ +#ifndef _fencer_player_h +#define _fencer_player_h + +#include "physics_entity.h" +#include "update_entity.h" +#include "transformable.h" +#include "sprite.h" + +typedef struct Player { + Transform transform; + RigidBody* rigidbody; + Shape* shape; + + Sprite* sprite; +} Player; + +extern void player_spawn(Player* self, Vector at); +extern void player_start(Player* self); +extern void player_update(Player* self, float dt); + +extern Transform* player_get_transform(Player* self); +extern RigidBody* player_get_rigidbody(Player* self); +extern Shape* player_get_shape(Player* self); + +extern Vector* player_get_position(Player* self); +extern Vector* player_get_scale(Player* self); +extern float* player_get_rotation(Player* self); + +impl_Transformable_for(Player, + player_get_transform, + player_get_position, + player_get_scale, + player_get_rotation +) +impl_PhysicsEntity_for(Player, + player_get_rigidbody, + player_get_shape +) +impl_BehaviourEntity_for(Player, + player_start, + player_update, + player_spawn +) + +#endif // !_fencer_player_h