implemented basic player struct with impl for behaviour physics and transformable

This commit is contained in:
Sara 2023-10-07 18:42:09 +02:00
parent 9c0c354fcd
commit c136bc1494
2 changed files with 78 additions and 0 deletions

33
src/player.c Normal file
View file

@ -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;
}

45
src/player.h Normal file
View file

@ -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