Commit 24b555b7 authored by vautrin33u's avatar vautrin33u
Browse files

Interaction four / lavabo faite

parent d008fe95
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -11,7 +11,7 @@
//enum état pour décrire la direction du sprite
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
......
......@@ -223,6 +223,15 @@ void set_cuisson(sprite_t *ingre, int 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){
//Ajoute les valeurs à la position actuelle d'un sprite
sprite->rect.x += x_move;
......@@ -243,7 +252,6 @@ void handle_collision (sprite_t* spr_move, sprite_t* spr_fixed){
switch (return_state(spr_move)){
case BAS:
//cas dans lequel le joueur descend 'à travers' un meuble
//spr_move->rect.y -= temp.h;
modif_position(spr_move, 0, -temp.h);
break;
......@@ -474,10 +482,44 @@ void gestion_events(SDL_Event *event, world_t *world){
case SDLK_SPACE:
//Récupération des ingrédients du frigo
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])){
set_portable(&world->en_cuisine[i]);
handle_deplacement_ingredient(&world->joueur, &world->en_cuisine[i]);
printf("BOUH\n");
//Interaction avec le frigo (récupérer les éléments un par un)
sprite_t* ingredient = &world->en_cuisine[i];
sprite_t* joueur = &world->joueur;
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;
......
......@@ -284,6 +284,13 @@ int est_visible (sprite_t *sprite);
*/
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)
* \param world les données du monde
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment