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