6 #include "./platforms.h"
11 typedef struct game_t {
13 platforms_t *platforms;
17 game_t *create_game(const char *platforms_file_path)
19 assert(platforms_file_path);
21 game_t *game = malloc(sizeof(game_t));
23 throw_error(ERROR_TYPE_LIBC);
24 goto malloc_game_failed;
27 if ((game->player = create_player(100.0f, 0.0f)) == NULL) {
28 goto create_player_failed;
31 if ((game->platforms = load_platforms_from_file(platforms_file_path)) == NULL) {
32 goto create_platforms_failed;
35 if ((game->camera = create_camera(vec(0.0f, 0.0f))) == NULL) {
36 goto create_camera_failed;
42 free(game->platforms);
43 create_platforms_failed:
51 void destroy_game(game_t *game)
56 free(game->platforms);
61 int game_render(const game_t *game, SDL_Renderer *renderer)
66 if (SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255) < 0) {
67 throw_error(ERROR_TYPE_SDL2);
71 if (SDL_RenderClear(renderer) < 0) {
72 throw_error(ERROR_TYPE_SDL2);
76 if (render_player(game->player, renderer, game->camera) < 0) {
80 if (render_platforms(game->platforms, renderer, game->camera) < 0) {
84 SDL_RenderPresent(renderer);
89 int game_update(game_t *game, Uint32 delta_time)
92 assert(delta_time > 0);
97 int game_event(game_t *game, const SDL_Event *event)
105 int game_input(game_t *game,
106 const Uint8 *const keyboard_state,
107 SDL_Joystick *the_stick_of_joy)
110 assert(keyboard_state);
111 assert(the_stick_of_joy);