level.h 909 B

123456789101112131415161718192021222324252627282930
  1. #pragma once
  2. #include "entity.h"
  3. #include "director.h"
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. typedef struct Level Level;
  8. typedef struct {
  9. void (*start)(Level* level, void* context);
  10. void (*stop)(Level* level, void* context);
  11. void (*update_pre)(Level* level, Director* director, void* context);
  12. void (*update_post)(Level* level, Director* director, void* context);
  13. void (*render_pre)(Level* level, Director* director, Canvas* canvas, void* context);
  14. void (*render_post)(Level* level, Director* director, Canvas* canvas, void* context);
  15. } LevelBehaviour;
  16. #define LEVEL_BEHAVIOUR_EMPTY ((LevelBehaviour){NULL, NULL, NULL, NULL, NULL, NULL})
  17. void level_behaviour_set(Level* level, LevelBehaviour behaviour, void* context);
  18. Entity* level_add_entity(Level* level, const EntityBehaviour* behaviour);
  19. void level_remove_entity(Level* level, Entity* entity);
  20. #ifdef __cplusplus
  21. }
  22. #endif