diff --git a/travail_de_groupe/chef_oeuvre/Res/character_tileset.png b/travail_de_groupe/chef_oeuvre/Res/character_tileset.png new file mode 100755 index 0000000000000000000000000000000000000000..10a2a7345a6109a55c646a6dddca2ddbb6ee1cf5 Binary files /dev/null and b/travail_de_groupe/chef_oeuvre/Res/character_tileset.png differ diff --git a/travail_de_groupe/chef_oeuvre/src/gest_event.c b/travail_de_groupe/chef_oeuvre/src/gest_event.c index caad8317dca7bb341842856eba8c5e14dff9a70a..92749b566d57083cf004fb92a5d554e70ce79845 100644 --- a/travail_de_groupe/chef_oeuvre/src/gest_event.c +++ b/travail_de_groupe/chef_oeuvre/src/gest_event.c @@ -128,7 +128,12 @@ void manageGame(){ continue; case SDL_MOUSEBUTTONDOWN: - pourWater(mousePosition.x, mousePosition.y); + //clic on water + if(2 == map[mousePosition.y][mousePosition.x]){ + fillWater(mousePosition.x, mousePosition.y); + }else{ + pourWater(mousePosition.x, mousePosition.y); + } break; default: diff --git a/travail_de_groupe/chef_oeuvre/src/player.c b/travail_de_groupe/chef_oeuvre/src/player.c index cc5135b7b723da9287fb87cca4890714b0933639..622717bb2c8d3520eb05bc00fbb341cad3b96541 100644 --- a/travail_de_groupe/chef_oeuvre/src/player.c +++ b/travail_de_groupe/chef_oeuvre/src/player.c @@ -32,7 +32,10 @@ int collisionsLeftPlayer(){ if(dotTopLeft==1 || dotDownLeft==1){ collision = 1; } - + //collision water + if(dotTopLeft==2 || dotDownLeft==2){ + collision = 1; + } return collision; } @@ -48,6 +51,10 @@ int collisionsRightPlayer(){ if(dotTopRight==1 || dotDownRight==1){ collision = 1; } + //collision water + if(dotTopRight==2 || dotDownRight==2){ + collision = 1; + } return collision; } @@ -63,6 +70,10 @@ int collisionsUpPlayer(){ if(dotTopRight==1 || dotTopLeft==1){ collision = 1; } + //collision water + if(dotTopRight==2 || dotTopLeft==2){ + collision = 1; + } return collision; } @@ -78,6 +89,10 @@ int collisionsDownPlayer(){ if(dotDownRight==1 || dotDownLeft==1){ collision = 1; } + //collision water + if(dotDownRight==2 || dotDownLeft==2){ + collision = 1; + } return collision; } @@ -109,18 +124,22 @@ void manageMovement(){ if(keys[PLAYER_UP]){ moveUpPlayer(); player.isMoving = 1; + player.direction = PLAYER_UP; } if(keys[PLAYER_DOWN]){ moveDownPlayer(); player.isMoving = 1; + player.direction = PLAYER_DOWN; } if(keys[PLAYER_LEFT]){ moveLeftPlayer(); player.isMoving = 1; + player.direction = PLAYER_LEFT; } if(keys[PLAYER_RIGHT]){ moveRightPlayer(); player.isMoving = 1; + player.direction = PLAYER_RIGHT; } player.isMoving = 0; } @@ -146,4 +165,10 @@ void pourWater(int x, int y){ } } +void fillWater(int x, int y){ + if(player.currentWater<player.waterMax && selectStateHover() == 1){ + player.currentWater = player.currentWater + 1; + } +} + diff --git a/travail_de_groupe/chef_oeuvre/src/player.h b/travail_de_groupe/chef_oeuvre/src/player.h index a8bcffb7d67bb15d6dfa6feaa4b19ef23b0a90f1..387cf001c1dcde003a376e123739a23e158ebbbe 100644 --- a/travail_de_groupe/chef_oeuvre/src/player.h +++ b/travail_de_groupe/chef_oeuvre/src/player.h @@ -18,6 +18,7 @@ typedef struct player{ int waterMax; int speed; int isMoving; + int direction; } player_t; extern player_t player; @@ -26,5 +27,7 @@ void initPlayer(); void manageMovement(); int selectStateHover(); void pourWater(int, int); +void fillWater(int, int); +int giveCaseBelowPosition(int, int); #endif \ No newline at end of file diff --git a/travail_de_groupe/chef_oeuvre/src/render.c b/travail_de_groupe/chef_oeuvre/src/render.c index 37ac7a4045789c634ec275ef2e8f32c2eecd0296..eafdaabb174150c383ffe7f237ef76480de2c294 100644 --- a/travail_de_groupe/chef_oeuvre/src/render.c +++ b/travail_de_groupe/chef_oeuvre/src/render.c @@ -152,8 +152,10 @@ void drawPlayer(){ rect.w = CELLSIZE; rect.x = player.x + (screenDimension.w - (MAPSIZE * CELLSIZE)) / 2; rect.y = player.y ; - SDL_Rect destRect = {32 * (SDL_GetTicks()/200%4), 0, 32, 32}; - SDL_RenderCopyEx(renderer, playerTexture, &destRect, &rect, 0, NULL, SDL_FLIP_NONE); + SDL_Rect destRect = {32 * (SDL_GetTicks()/200%6), 0, 32, 32}; + SDL_Texture * drawTexture = (player.isMoving) ? (playerTexture):(playerIdleTexture); + int flip = (player.direction == PLAYER_LEFT) ? (SDL_FLIP_HORIZONTAL) : (SDL_FLIP_NONE); + SDL_RenderCopyEx(renderer, playerTexture, &destRect, &rect, 0, NULL, flip); } void drawBackgroundSides(){ @@ -224,7 +226,7 @@ void mainLoop(){ noHoverSurface = IMG_Load("Res/noHover.png"); noHoverTexture = SDL_CreateTextureFromSurface(renderer, noHoverSurface); - playerSurface = IMG_Load("Res/character_spritesheet.png"); + playerSurface = IMG_Load("Res/character_tileset.png"); playerTexture = SDL_CreateTextureFromSurface(renderer, playerSurface); playerIdleSurface = IMG_Load("Res/character_idle_spritesheet.png");