| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #pragma once
- #include "vector.h"
- #include "game_engine.h"
- #include <stdlib.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- typedef struct Entity Entity;
- typedef struct Level Level;
- typedef union {
- uint32_t value;
- void* pointer;
- } EntityEventValue;
- typedef struct {
- uint32_t type;
- Entity* sender;
- EntityEventValue value;
- } EntityEvent;
- typedef struct Level Level;
- typedef struct GameManager GameManager;
- typedef struct {
- void (*start)(Entity* self, GameManager* manager, void* context);
- void (*stop)(Entity* self, GameManager* manager, void* context);
- void (*update)(Entity* self, GameManager* manager, void* context);
- void (*render)(Entity* self, GameManager* manager, Canvas* canvas, void* context);
- void (*collision)(Entity* self, Entity* other, GameManager* manager, void* context);
- void (*event)(Entity* self, GameManager* manager, EntityEvent event, void* context);
- size_t context_size;
- } EntityDescription;
- const EntityDescription* entity_description_get(Entity* entity);
- Vector entity_pos_get(Entity* entity);
- void entity_pos_set(Entity* entity, Vector position);
- void* entity_context_get(Entity* entity);
- void entity_collider_add_circle(Entity* entity, float radius);
- void entity_collider_add_rect(Entity* entity, float width, float height);
- void entity_collider_remove(Entity* entity);
- void entity_collider_offset_set(Entity* entity, Vector offset);
- Vector entity_collider_offset_get(Entity* entity);
- void entity_send_event(
- Entity* sender,
- Entity* receiver,
- GameManager* manager,
- uint32_t type,
- EntityEventValue value);
- #ifdef __cplusplus
- }
- #endif
|