69 lines
1.5 KiB
C
69 lines
1.5 KiB
C
#ifndef _fencer_player_h
|
|
#define _fencer_player_h
|
|
|
|
#include "drop.h"
|
|
#include "physics_entity.h"
|
|
#include "behaviour_entity.h"
|
|
#include "transformable.h"
|
|
#include "collision.h"
|
|
#include "sprite.h"
|
|
#include "sprite_entity.h"
|
|
#include "player_input.h"
|
|
|
|
typedef struct Player {
|
|
Transform transform;
|
|
RigidBody* rigidbody;
|
|
Shape* shape;
|
|
|
|
Vector directional;
|
|
|
|
Sprite* sprite;
|
|
int is_grounded;
|
|
PlayerInput* player_input;
|
|
} Player;
|
|
|
|
extern Player* player_new();
|
|
extern void player_spawn(Player* self, Vector at);
|
|
extern void player_start(Player* self);
|
|
extern void player_update(Player* self, float dt);
|
|
extern void player_draw(Player* self);
|
|
extern void player_free(Player* self);
|
|
|
|
extern void player_collision(Player* self, Collision hit);
|
|
|
|
extern Sprite* player_get_sprite(Player* sprite);
|
|
|
|
extern Transform* player_get_transform(Player* self);
|
|
extern Transform* player_get_rigidbody_transform(Player* self);
|
|
extern RigidBody* player_get_rigidbody(Player* self);
|
|
extern Shape* player_get_shape(Player* self);
|
|
extern void player_collision_solver(Player* self, List* contacts);
|
|
|
|
impl_Transformable_for(Player,
|
|
player_get_transform
|
|
)
|
|
|
|
impl_SpriteEntity_for(Player,
|
|
player_get_sprite
|
|
)
|
|
|
|
impl_PhysicsEntity_for(Player,
|
|
player_get_rigidbody,
|
|
player_get_shape,
|
|
player_collision,
|
|
player_collision_solver
|
|
)
|
|
|
|
impl_Drop_for(Player,
|
|
player_free
|
|
)
|
|
|
|
impl_BehaviourEntity_for(Player,
|
|
player_start,
|
|
player_update,
|
|
player_spawn,
|
|
player_draw
|
|
)
|
|
|
|
#endif // !_fencer_player_h
|