58 lines
1.2 KiB
C
58 lines
1.2 KiB
C
#ifndef FIGHT_PROP_H
|
|
#define FIGHT_PROP_H
|
|
|
|
#include "physics_entity.h"
|
|
#include "behaviour_entity.h"
|
|
#include "transformable.h"
|
|
#include "drop.h"
|
|
#include "transform.h"
|
|
#include "sprite.h"
|
|
#include "rigidbody.h"
|
|
#include "collider.h"
|
|
|
|
typedef struct Prop {
|
|
Transform transform;
|
|
Sprite* sprite;
|
|
RigidBody* rigidbody;
|
|
Collider* collisionShape;
|
|
} Prop;
|
|
|
|
Prop* MakeProp(Sprite* sprite, Shape* shape);
|
|
Prop* SpawnProp(Vector location, Sprite* sprite, Shape* shape, Vector origin);
|
|
void DestroyProp(Prop* self);
|
|
|
|
void PropStart(Prop* self);
|
|
void PropUpdate(Prop* self, float deltaTime);
|
|
void PropDraw(Prop* self);
|
|
|
|
void PropOnCollision(Prop* self, Collision collision);
|
|
void PropOnOverlap(Prop* self, Collider* other);
|
|
|
|
Transform* PropGetTransform(Prop* self);
|
|
RigidBody* PropGetRigidBody(Prop* self);
|
|
|
|
static long PropGetDepth(Prop* self) { return -(int)(self->transform.position.y * 1000); }
|
|
|
|
impl_Transformable_for(Prop,
|
|
PropGetTransform
|
|
)
|
|
|
|
impl_PhysicsEntity_for(Prop,
|
|
PropGetRigidBody,
|
|
PropOnCollision,
|
|
PropOnOverlap
|
|
)
|
|
|
|
impl_Drop_for(Prop,
|
|
DestroyProp
|
|
)
|
|
|
|
impl_BehaviourEntity_for(Prop,
|
|
PropStart,
|
|
PropUpdate,
|
|
PropDraw,
|
|
PropGetDepth
|
|
)
|
|
|
|
#endif // !FIGHT_PROP_H
|