level.h 944 B

1234567891011121314151617181920212223242526272829303132
  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. void level_clear(Level* level);
  19. Entity* level_add_entity(Level* level, const EntityDescription* behaviour);
  20. void level_remove_entity(Level* level, Entity* entity);
  21. #ifdef __cplusplus
  22. }
  23. #endif