game_manager.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #pragma once
  2. #include "level.h"
  3. #include "game_engine.h"
  4. #include "sprite.h"
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. typedef struct GameManager GameManager;
  9. Level* game_manager_add_level(GameManager* manager, const LevelBehaviour* behaviour);
  10. void game_manager_next_level_set(GameManager* manager, Level* level);
  11. /**
  12. * @brief Get the current level
  13. * @warning This function returns current level, but in entity start or stop callbacks, the level may be different from entity's level.
  14. * For example, if an entity is added to a level_game and you currently are in level_pause, this function will return level_pause.
  15. * Use game_manager_entity_level_get to get the entity's level, or save the level pointer somewhere.
  16. *
  17. * @param manager game manager instance
  18. * @return Level* level instance
  19. */
  20. Level* game_manager_current_level_get(GameManager* manager);
  21. /**
  22. * @brief Get the level of an entity
  23. * @warning This function is kinda slow, use it only when other methods are not possible
  24. *
  25. * @param manager
  26. * @param entity
  27. * @return Level*
  28. */
  29. Level* game_manager_entity_level_get(GameManager* manager, Entity* entity);
  30. GameEngine* game_manager_engine_get(GameManager* manager);
  31. InputState game_manager_input_get(GameManager* manager);
  32. void* game_manager_game_context_get(GameManager* manager);
  33. void game_manager_game_stop(GameManager* manager);
  34. void game_manager_show_fps_set(GameManager* manager, bool show_fps);
  35. /**
  36. * @brief Load a sprite from a file
  37. * Sprite will be cached and reused if the same file is loaded again
  38. *
  39. * @param manager game manager instance
  40. * @param path sprite file path, relative to the game's assets folder
  41. * @return Sprite* or NULL if the sprite could not be loaded
  42. */
  43. Sprite* game_manager_sprite_load(GameManager* manager, const char* path);
  44. #ifdef __cplusplus
  45. }
  46. #endif