static void draw_platforms(SDL_Renderer *r, json_t const *ps, tile const *t, SDL_Rect const *off) { int i; json_t *m; json_array_foreach(ps, i, m) { SDL_Rect p = { x: json_integer_value(json_array_get(m, 0)) - off->x, y: json_integer_value(json_array_get(m, 1)) - off->y, w: json_integer_value(json_array_get(m, 2)), h: 0 }; draw_platform(r, &p, t); }
int launch_the_game(t_opengl *opengl, t_camera *camera) { int i = 0; int continuer = 1; t_coord player = {0, 0, 0, 0, UP}; static t_ptr_key ptr[9] = {{SDLK_DOWN, &modif_cam_z}, {SDLK_UP, &modif_cam_z}, {SDLK_LEFT, &modif_cam_x}, {SDLK_RIGHT, &modif_cam_x}, {280, &modif_cam_y}, {281, &modif_cam_y}, {Q, &move}, {D, &move}, {0, NULL}}; while (continuer == 1) { SDL_PollEvent(&opengl->event); SDL_Delay(10); if (opengl->event.type == SDL_QUIT) exit(SUCCESS); if (opengl->event.type == SDL_KEYDOWN) { i = 0; while (i < 11) { if (opengl->event.key.keysym.sym == ptr[i].keycode) { if ((i % 2) == 0) ptr[i].ptr_keycode(camera, &player, 0); else if ((i % 2) == 1) ptr[i].ptr_keycode(camera, &player, 1); } i = i + 1; } } glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(camera->x, camera->y, camera->z, camera->eye_x, camera->eye_y, camera->eye_z, 0, 0, 1); draw_platform(); draw_wall(&player); SDL_GL_SwapBuffers(); glFlush(); } return (SUCCESS); }