diff --git a/main.c b/main.c index c6c4af3..80375d0 100755 --- a/main.c +++ b/main.c @@ -233,6 +233,7 @@ void handleAction(t_action action, t_dude* dude){ } void generateImg(int width, int height){ + img = SDL_CreateRGBSurface(0, width, height, 32, 0, 0, 0, 0); int i, j; for(i=0; iformat, 255, 255, 255)); + SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 255, 255, 255)); if (SDL_Init(SDL_INIT_VIDEO) == -1) { fprintf(stderr, "Erreur d'initialisation de la SDL");// and you don't want my french comment :p exit(EXIT_FAILURE); } + return screen; +} + +void render(SDL_Surface* screen, int x_offset, int y_offset, int zoom_level){ + int i, j, x, y; + SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); + for(i=0; iw; i++){ + for(j=0; jh; j++){ + x = i/zoom_level + x_offset; + y = j/zoom_level + y_offset; + if(x >= 0 && x < img->w && y >= 0 && y < img->h) + putpixel(screen, i, j, getpixel(img, x, y)); + } + } } int MAIN { + SDL_Surface* screen; SDL_Event event; int i; + int paused = 0; + int x_offset = 0; + int y_offset = 0; + int zoom_level = 1; int over = 0; int wait_time = 100; int fullscreen = 0; @@ -292,7 +313,7 @@ int MAIN } #endif - initSDL(width, height, fullscreen); + screen = initSDL(width, height, fullscreen); initWorld(width, height); SDL_Flip(img); @@ -306,6 +327,29 @@ int MAIN case SDLK_ESCAPE : over = 1; break; + case SDLK_UP : + y_offset--; + break; + case SDLK_DOWN : + y_offset++; + break; + case SDLK_LEFT : + x_offset--; + break; + case SDLK_RIGHT : + x_offset++; + break; + case SDLK_PAGEUP : + zoom_level++; + break; + case SDLK_PAGEDOWN : + zoom_level--; + if(zoom_level < 1) + zoom_level = 1; + break; + case SDLK_SPACE : + paused = !paused; + break; default : break; } @@ -318,15 +362,19 @@ int MAIN } } - spawnDudes(); - for(i=0; i