entity.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #pragma once
  2. #include "vector.h"
  3. #include "game_engine.h"
  4. #include <stdlib.h>
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. typedef struct Entity Entity;
  9. typedef struct Level Level;
  10. typedef union {
  11. uint32_t value;
  12. void* pointer;
  13. } EntityEventValue;
  14. typedef struct {
  15. uint32_t type;
  16. Entity* sender;
  17. EntityEventValue value;
  18. } EntityEvent;
  19. typedef struct Level Level;
  20. typedef struct GameManager GameManager;
  21. typedef struct {
  22. void (*start)(Entity* self, GameManager* manager, void* context);
  23. void (*stop)(Entity* self, GameManager* manager, void* context);
  24. void (*update)(Entity* self, GameManager* manager, void* context);
  25. void (*render)(Entity* self, GameManager* manager, Canvas* canvas, void* context);
  26. void (*collision)(Entity* self, Entity* other, GameManager* manager, void* context);
  27. void (*event)(Entity* self, GameManager* manager, EntityEvent event, void* context);
  28. size_t context_size;
  29. } EntityDescription;
  30. const EntityDescription* entity_description_get(Entity* entity);
  31. Vector entity_pos_get(Entity* entity);
  32. void entity_pos_set(Entity* entity, Vector position);
  33. void* entity_context_get(Entity* entity);
  34. void entity_collider_add_circle(Entity* entity, float radius);
  35. void entity_collider_add_rect(Entity* entity, float width, float height);
  36. void entity_collider_remove(Entity* entity);
  37. void entity_collider_offset_set(Entity* entity, Vector offset);
  38. Vector entity_collider_offset_get(Entity* entity);
  39. void entity_send_event(Entity* entity, uint32_t type, EntityEventValue value);
  40. #ifdef __cplusplus
  41. }
  42. #endif