From dc9b56a7650dd65d574c0e33ea7cb9e1612622f7 Mon Sep 17 00:00:00 2001 From: Silvan Jegen Date: Mon, 7 Jan 2019 21:59:53 +0100 Subject: Start porting code to SDL2 (WIP) --- game.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'game.c') diff --git a/game.c b/game.c index eaac7f9..c9571e1 100644 --- a/game.c +++ b/game.c @@ -75,7 +75,7 @@ int player_action( signed int xdiff, signed int ydiff, struct level_struct *curr } -int play_level( struct level_struct *currentlevel, SDL_Surface * surf_screen ) +int play_level(SDL_Renderer* renderer, struct level_struct *currentlevel, SDL_Texture * surf_screen ) { // Loop until the user completes the level int player_status = PLAYER_IS_OK; @@ -87,7 +87,7 @@ int play_level( struct level_struct *currentlevel, SDL_Surface * surf_screen ) // WaitEvent is like PollEvent, but instead we pause the program's // execution until we get input SDL_WaitEvent( &userinput ); - render( currentlevel, surf_screen ); + render(renderer, currentlevel, surf_screen); // Player movement signed int y, x; @@ -122,7 +122,7 @@ int play_level( struct level_struct *currentlevel, SDL_Surface * surf_screen ) case SDLK_h: // View the help screen - help( surf_screen ); + help(renderer, surf_screen); x = 0; y = 0; @@ -146,7 +146,7 @@ int play_level( struct level_struct *currentlevel, SDL_Surface * surf_screen ) if ( check_echidna_proximity( currentlevel ) == 1 ) player_status = PLAYER_IS_DEAD; // Show a losing screen if applicable - if (player_status == PLAYER_IS_DEAD) render_a_losingscreen( currentlevel, surf_screen); + if (player_status == PLAYER_IS_DEAD) render_a_losingscreen(renderer, currentlevel, surf_screen); } } @@ -158,11 +158,11 @@ int play_level( struct level_struct *currentlevel, SDL_Surface * surf_screen ) return player_status; } -void game_loop( SDL_Surface * surf_screen ) +void game_loop(SDL_Renderer* renderer, SDL_Texture* surf_screen) { struct level_struct currentlevel; - level_load_resources( ¤tlevel ); // load pixmaps + level_load_resources(renderer, ¤tlevel ); // load pixmaps // Initialise initial player face currentlevel.player_face = 2; @@ -185,7 +185,7 @@ void game_loop( SDL_Surface * surf_screen ) currentlevel.py = currentlevel.sy; // Main game loop - level_state = play_level( ¤tlevel, surf_screen ); + level_state = play_level(renderer, ¤tlevel, surf_screen ); } @@ -194,9 +194,11 @@ void game_loop( SDL_Surface * surf_screen ) // The user has now completed all of the game // Show them the winning screen - SDL_BlitSurface( currentlevel.surf_winning_screen, NULL, surf_screen, NULL); - SDL_Flip( surf_screen ); - + + SDL_RenderClear(renderer); + SDL_RenderCopy(renderer, currentlevel.surf_winning_screen, NULL, NULL); + SDL_RenderPresent(renderer); + SDL_Delay(20 * 1000); // 20 * 1000msecs = 20 seconds // Once this function ends, we return to the menu -- cgit v1.2.1-18-gbd029