Skip to content
Snippets Groups Projects
Commit 24b555b7 authored by vautrin33u's avatar vautrin33u
Browse files

Interaction four / lavabo faite

parent d008fe95
Branches
No related tags found
No related merge requests found
Source diff could not be displayed: it is too large. Options to address this: view the blob.
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
//enum état pour décrire la direction du sprite //enum état pour décrire la direction du sprite
enum etat {BAS, HAUT, DROITE, GAUCHE, MOBILE, FIXE, PORTE, POSE}; enum etat {BAS, HAUT, DROITE, GAUCHE, MOBILE, FIXE, PORTE, POSE};
enum cuisson {INCONCERNE, FRIGO, FRAIS, SALE, PROPRE, CUIT, JETE}; enum cuisson {INCONCERNE, FRIGO, FRAIS, SALE, PROPRE, CUIT, CRU, JETE};
/** /**
* \brief Largeur de l'écran * \brief Largeur de l'écran
......
...@@ -223,6 +223,15 @@ void set_cuisson(sprite_t *ingre, int cuisson){ ...@@ -223,6 +223,15 @@ void set_cuisson(sprite_t *ingre, int cuisson){
ingre->cuisson = cuisson; ingre->cuisson = cuisson;
} }
void init_cuisson (sprite_t* sprite){
if (sprite->nom == NOM_TOMATE ||sprite->nom == NOM_SALADE || sprite->nom == NOM_CORNICHON) {
set_cuisson(sprite, SALE);
}
if (sprite->nom == NOM_PAIN || sprite->nom == NOM_FROMAGE || sprite->nom == NOM_STEAK) {
set_cuisson(sprite, CRU);
}
}
void modif_position (sprite_t *sprite, int x_move, int y_move){ void modif_position (sprite_t *sprite, int x_move, int y_move){
//Ajoute les valeurs à la position actuelle d'un sprite //Ajoute les valeurs à la position actuelle d'un sprite
sprite->rect.x += x_move; sprite->rect.x += x_move;
...@@ -243,7 +252,6 @@ void handle_collision (sprite_t* spr_move, sprite_t* spr_fixed){ ...@@ -243,7 +252,6 @@ void handle_collision (sprite_t* spr_move, sprite_t* spr_fixed){
switch (return_state(spr_move)){ switch (return_state(spr_move)){
case BAS: case BAS:
//cas dans lequel le joueur descend 'à travers' un meuble //cas dans lequel le joueur descend 'à travers' un meuble
//spr_move->rect.y -= temp.h;
modif_position(spr_move, 0, -temp.h); modif_position(spr_move, 0, -temp.h);
break; break;
...@@ -474,10 +482,44 @@ void gestion_events(SDL_Event *event, world_t *world){ ...@@ -474,10 +482,44 @@ void gestion_events(SDL_Event *event, world_t *world){
case SDLK_SPACE: case SDLK_SPACE:
//Récupération des ingrédients du frigo //Récupération des ingrédients du frigo
for (int i=0; i<INGREDIENT_DISPO; i++){ for (int i=0; i<INGREDIENT_DISPO; i++){
if (has_interaction (&world->joueur, &world->frigo)==SDL_TRUE && has_collided(&world->frigo, &world->en_cuisine[i])){ //Interaction avec le frigo (récupérer les éléments un par un)
set_portable(&world->en_cuisine[i]); sprite_t* ingredient = &world->en_cuisine[i];
handle_deplacement_ingredient(&world->joueur, &world->en_cuisine[i]); sprite_t* joueur = &world->joueur;
printf("BOUH\n"); if (has_interaction (joueur, &world->frigo) && has_collided(&world->frigo, ingredient) && return_state(ingredient) == POSE){
set_portable(ingredient);
init_cuisson(ingredient);
handle_deplacement_ingredient(joueur, ingredient);
break;
}
//Interaction avec le four
if (has_interaction(joueur, &world->four) && has_collided(joueur, ingredient) && return_state(ingredient) == POSE && get_cuisson(ingredient) == CUIT){
//On retire un ingrédient du feu
set_portable(ingredient);
handle_deplacement_ingredient(joueur, ingredient);
break;
}
if (has_interaction(joueur, &world->four) && has_collided(joueur, ingredient) && return_state(ingredient) == PORTE && get_cuisson(ingredient) == CRU){
//On pose un ingrédient pour le cuire
set_posee(ingredient);
set_cuisson(ingredient, CUIT);
break;
}
//Interaction avec le lavabo
if (has_interaction(joueur, &world->lavabo) && has_collided(joueur, ingredient) && return_state(ingredient) == POSE && get_cuisson(ingredient) == PROPRE){
//On retire un ingrédient du lavabo
set_portable(ingredient);
handle_deplacement_ingredient(joueur, ingredient);
break;
}
if (has_interaction(joueur, &world->lavabo) && has_collided(joueur, ingredient) && return_state(ingredient) == PORTE && get_cuisson(ingredient) == SALE){
//On pose un ingrédient pour le laver
set_posee(ingredient);
set_cuisson(ingredient, PROPRE);
break;
} }
} }
break; break;
......
...@@ -284,6 +284,13 @@ int est_visible (sprite_t *sprite); ...@@ -284,6 +284,13 @@ int est_visible (sprite_t *sprite);
*/ */
void init_data(world_t * world); void init_data(world_t * world);
/**
* @brief Initialise les cuissons à la sortie du frigo
*
* @param sprite
*/
void init_cuisson (sprite_t* sprite);
/** /**
* \brief retourne la valeur de fin de jeu (si 0: jeu continue) * \brief retourne la valeur de fin de jeu (si 0: jeu continue)
* \param world les données du monde * \param world les données du monde
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment