summaryrefslogtreecommitdiff
path: root/game.c
diff options
context:
space:
mode:
authorSilvan Jegen <s.jegen@gmail.com>2019-01-07 21:59:53 +0100
committerSilvan Jegen <s.jegen@gmail.com>2019-01-07 21:59:53 +0100
commitdc9b56a7650dd65d574c0e33ea7cb9e1612622f7 (patch)
tree5a9318c7722ed74b6333344c041994dfb3d1488a /game.c
parentc324d94bfd3151df3f999f33208ef07bf9d95fb8 (diff)
Start porting code to SDL2 (WIP)
Diffstat (limited to 'game.c')
-rw-r--r--game.c22
1 files changed, 12 insertions, 10 deletions
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( &currentlevel ); // load pixmaps
+ level_load_resources(renderer, &currentlevel ); // 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( &currentlevel, surf_screen );
+ level_state = play_level(renderer, &currentlevel, 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