-
vautrin33u authoredvautrin33u authored
graphisme.h 6.67 KiB
/**
* \file graphique.h
* \brief Entête du module des fonctions gérant les graphismes du jeu
* \author Guillaume Vautrin
* \version 1.0
* \date 4 Novembre 2020
*/
#ifndef GRAPHISME_H
#define GRAPHISME_H
#include "logique.h"
struct textures_s{
SDL_Texture* menu; /*!< Texture liée à l'image du fond du menu. */
SDL_Texture* choix; /*!< Texture liée au choix du joueur dans le menu.*/
SDL_Texture* fond; /*!< Texture liée à l'image du fond de l'écran. */
SDL_Texture* joueur ; /*!< Texture du joueur*/
SDL_Texture* comptoire ; /*!< Texture des comptoires */
SDL_Texture* envoi ; /*!<Tableau de texture de la zone d'envoi */
SDL_Texture* four ; /*!<Tableau de texture du four */
SDL_Texture* lavabo ; /*!<Tableau de texture du frigo */
SDL_Texture* poubelle ; /*!<Texture de la poubelle */
SDL_Texture* frigo ; /*!<Tableau de texture du frigo */
SDL_Texture* ingredient ; /*!<textures des ingredients */
TTF_Font* police; /*Texture de la police d'écriture*/
SDL_Texture* message; /*!<textures du message score */
SDL_Texture* points; /*!<textures du texte du score */
SDL_Texture* horloge; /*!<textures du texte de l'horloge */
SDL_Texture* titre; /*!<Texture du texte du titre */
SDL_Texture* option1; /*!<Texture du texte de l'option 1 */
SDL_Texture* option2; /*!<Texture du texte de l'option 2 */
SDL_Texture* option3; /*!<Texture du texte de l'option 3 */
SDL_Texture* controle; /*!< Texture du texte explicant les touches du jeu */
SDL_Texture* controle2; /*!< Texture du texte explicant les touches du jeu */
SDL_Texture* best; /*!< Tableau de texture du tableau de score */
SDL_Texture* score; /*!< Texture du texte du score */
};
/**
* \brief Type qui correspond aux textures du jeu
*/
typedef struct textures_s textures_t;
/**
* @brief Charge une image sous forme de texture
*
* @param nomfichier Emplacement du fichier (BMP)
* @param renderer
* @return SDL_Texture*
*/
SDL_Texture* charger_image (const char* nomfichier, SDL_Renderer* renderer);
/**
* @brief Charge une image avec des éléments transparents sur une texture
*
* @param nomfichier Emplacement du fichier
* @param renderer
* @param r
* @param g
* @param b
* @return SDL_Texture*
*/
SDL_Texture* charger_image_transparente(const char* nomfichier, SDL_Renderer* renderer, Uint8 r, Uint8 g, Uint8 b) ;
/**
* @brief Charge du texte sur une texture
*
* @param message Texte à afficher
* @param renderer
* @param font Police utilisé pour retranscrire le texte à l'écran
* @param color Couleur du texte
* @return SDL_Texture*
*/
SDL_Texture* charger_texte (const char* message, SDL_Renderer* renderer, TTF_Font *font, SDL_Color color);
/**
* @brief Appliquer le texte sur le renderer
*
* @param renderer
* @param zone_texte Zone de l'écran où faire apparaître le texte
* @param texte Texture correspondant au texte
*/
void render_texte(SDL_Renderer *renderer, SDL_Rect zone_texte, SDL_Texture* texte);
/**
* \brief La fonction nettoie les textures
* \param textures les textures
*/
void clean_textures(textures_t *textures);
/**
* @brief Nettoyage des éléments graphiques en fin de jeu
*
* @param renderer
* @param textures
* @param fenetre
*/
void nettoyage_graphisme (SDL_Renderer *renderer, textures_t *textures, SDL_Window *fenetre);
/**
* \brief La fonction initialise les texures
* \param renderer la surface correspondant à l'écran de jeu
* \param textures les textures du jeu
* \param font la police du texte
*/
void init_textures (SDL_Renderer *renderer, textures_t *textures, TTF_Font *font);
/**
* @brief Applique une texture sur un sprite
*
* @param renderer surface écran de jeu
* @param tex SDL_Texture du sprite
* @param sprite données du sprite
*/
void apply_sprite (SDL_Renderer *renderer, SDL_Texture *tex, sprite_t sprite);
/**
* @brief Applique tous les éléments graphiques sur le renderer
*
* @param renderer surface de l'écran de jeu
* @param textures textures des sprites
* @param world données du monde dont les sprites
*/
void apply_graphics (SDL_Renderer *renderer, textures_t *textures, world_t *world);
/**
* @brief Applique tous les éléments du mobilier sur le renderer
*
* @param renderer
* @param textures
* @param world Donne accès aux sprite du mobilier
*/
void apply_mobilier (SDL_Renderer* renderer, textures_t* textures, world_t* world);
/**
* @brief Applique tous les éléments textuels sur le renderer
*
* @param renderer
* @param stock état des stocks et score
* @param textures
*/
void apply_texte (SDL_Renderer* renderer, world_t* world, textures_t* textures);
/**
* @brief Applique les ingrédients en jeu sur le renderer
*
* @param renderer
* @param textures textures du jeu
* @param ingredients données concernant les ingrédients en jeu
* @param taille_commande taille de la commande actuelle
*/
void apply_ingredients (SDL_Renderer* renderer, textures_t* textures, sprite_t* ingredients, int taille_commande);
/**
* @brief Applique les éléments du menu sur l'écran
*
* @param renderer
* @param textures textures du jeu
* @param menu données du jeu
*/
void apply_graphics_menu (SDL_Renderer *renderer, textures_t *textures, menu_t* menu);
/**
* @brief Créer un objet SDL_rect
*
* @param x abscisse
* @param y ordonnée
* @param w largeur
* @param h hauteur
* @return const SDL_Rect*
*/
SDL_Rect create_SDL_rect (int x, int y, int w, int h);
/**
* @brief Créer un SDL_rect retournant un rectangle de la taille d'un sprite issue d'une image (SOURCE)
*
* @param texture
* @param x position abscisse du rectangle à représenter
* @param y position ordonné du rectangle à représenter
* @param h hauteur du rectangle à représenter
* @param w largeur du rectangle à représenter
* @return SDL_Rect représentant l'image source tel quel
*/
SDL_Rect create_SDL_rect_from_texture (SDL_Texture * texture, int x, int y, int h, int w);
/**
* @brief Créer un SDL_rect selon les données d'un sprite (DEST)
*
* @param sprite
* @return const SDL_Rect*
*/
SDL_Rect create_SDL_rect_from_sprite (sprite_t * sprite);
/**
* @brief mets à jour les éléments graphique de la fenêtre de jeu
*
* @param renderer
* @param world données de jeu
* @param textures textures disponibles
*/
void update_graphics (SDL_Renderer *renderer, world_t *world, textures_t *textures);
/**
* @brief Mets à jour les éléments graphiques pour afficher le score
*
* @param renderer
* @param textures
* @param scores meilleurs scores des parties jusque maintenant
* @param score_actuel score de la partie actuelle
*/
void apply_graphics_score(SDL_Renderer* renderer, textures_t* textures, int* scores, int score_actuel);
#endif