diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 24 |
1 files changed, 21 insertions, 3 deletions
@@ -24,6 +24,7 @@ #include "game.h" #include "render.h" #include "physics.h" +#include "utils.h" int main(int argc, char *argv[]) { @@ -42,7 +43,8 @@ int main(int argc, char *argv[]) { SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); width = 1680; height = 1050; - screen = SDL_SetVideoMode(width, height, 16, SDL_OPENGL | SDL_FULLSCREEN); + width=640;height=480; + screen = SDL_SetVideoMode(width, height, 16, SDL_OPENGL);// | SDL_FULLSCREEN); if ( screen == NULL ) { width = 1280; height = 1024; screen = SDL_SetVideoMode(width, height, 16, SDL_OPENGL | SDL_FULLSCREEN); @@ -99,8 +101,24 @@ int main(int argc, char *argv[]) { render_draw(game); } - /* Sleep for around 8ms to avoid hogging the CPU. This value gives about 100fps on my (rather modest) machine. */ - usleep(8000); + printf("%+7.4f %+7.4f %+7.4f %+5.1f deg %+7.5f %+7.5f %+7.5f %2i %2i %2i %3i %3i fps\r", + game->lander->x, game->lander->y, game->lander->z, + rad2deg(game->lander->yaw), game->lander->vx, game->lander->vy, game->lander->vz, + game->cur_room_x, game->cur_room_y, game->cur_room_z, game->num_rooms, game->render->fps); + fflush(stdout); + + /* Attempt to hold output FPS close to 100 */ + if ( (!game->frame_delay_fiddled) && (game->render->fps < 90) ) { + game->frame_delay -= game->frame_delay/20; + game->frame_delay_fiddled = 1; + } + if ( (!game->frame_delay_fiddled) && (game->render->fps > 110) ) { + game->frame_delay += game->frame_delay/20; + game->frame_delay_fiddled = 1; + } + + /* Sleep for a bit to avoid hogging the CPU. */ + usleep(game->frame_delay); } |